为什么这段代码没有进入无限循环? (蟒蛇)

时间:2016-02-25 03:54:21

标签: python

我目前开始专门学习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

3 个答案:

答案 0 :(得分:1)

  1. 要让此代码无限循环,count必须为>= N

  2. 要计算增加,x必须等于2

  3. 要使x等于2,内部for循环需要运行两次:

        for i in range(1, number+1): 
           if number % i == 0: 
               x = x + 1
    
  4. 要使内部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循环会因此而中断。因此,为什么它不会永远存在。