我目前开始专门学习Python和while和for循环。
我希望下面的代码进入无限循环,但事实并非如此。谁能解释一下?
N = int(input("Enter N: "))
number = 1
count = 0
while count < N:
x = 0
for i in range(1, number+1):
if number % i == 0:
x = x + 1
if x == 2:
print(i)
count = count + 1
number = number + 1
答案 0 :(得分:1)
要让此代码无限循环,count
必须为>= N
。
要计算增加,x
必须等于2
。
要使x
等于2
,内部for循环需要运行两次:
for i in range(1, number+1):
if number % i == 0:
x = x + 1
for
循环运行两次number
,除了1
和数字本身之外,不得有其他因素。这只留下素数。
当x == 2
是素数时,内部循环将始终设置为number
。由于素数无限,count >= N
最终会得到满足。答案 1 :(得分:0)
尝试将 N 更改为数字:
proc contents data= your_data_set noprint out= _data_ ; run;
proc sql noprint ;
select name into :list_of_cols separated by ' ' from &syslast
where lowcase(name) like '%_fix' ;
quit;
答案 2 :(得分:0)
好的,让我们剖析您的代码。
N = int(input("Enter N: "))
number = 1
count = 0
在这里您正在接受用户输入并将N设置为某个数字, 为了简洁起见,让我们说4.它现在变成了一个整数 整数。您还将计数初始化为0以进行循环,并将数字变量保持为1。
while count < N:
x = 0
for i in range(1, number+1):
if number % i == 0:
x = x + 1
if x == 2:
print(i)
count = count + 1
number = number + 1
这里你说当count小于N时,继续做缩进的代码块。
所以在我们的N输入情况(4)中,我们循环直到count等于4,这打破了while循环的逻辑。你的第一次迭代是x = 0
这意味着每当你从顶部x再次开始变为0时,接下来你输入一个for循环从1到最多但不包括你的数字(1)+ 1以上make 2.然后检查数字是否可以被for循环中的任何i等于整除,并且每当发生这种情况时,你将x加1。在迭代发生之后,然后检查x是否为2,这是真的,因此在for循环之后输入if块。每次你点击那个秒,如果阻止你通过添加一个来更新计数。现在请记住,只要满足if x == 2
并且每次迭代都会满足它,它就会不断更新,所以最终你的while循环会因此而中断。因此,为什么它不会永远存在。