簡體   English   中英

為什么此代碼不進入無限循環? (蟒蛇)

[英]Why does this code not go to an infinite loop? (Python)

我目前正在專門學習while和for循環的Python。

我期望下面的代碼進入無限循環,但事實並非如此。 誰能解釋?

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
  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循環運行兩次, number1和數字本身外不得具有其他因素。 這只剩下質數。 number是質數時,內部循環將始終將x == 2設置為。 由於存在無限數量的質數,最終將滿足count >= N

嘗試將N更改為number

while count < N:
while count < number:

好吧,讓我們剖析您的代碼。


N = int(input("Enter N: "))
number = 1
count = 0

為了簡潔起見,在這里您要接受用戶輸入並將N設置為某個數字。假設4。它被強制轉換為int,因此現在是整數。 您還可以將計數初始化為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

在這里,您說計數小於N時,請繼續執行縮進的代碼塊。 因此,在我們的N個輸入情況(4)中,我們一直循環直到count等於4,這打破了while循環的邏輯。 您的第一次迭代中有一個x = 0這意味着每次您從頂部重新開始時x都會變為0。接下來,您將輸入一個for循環,該循環從1到但不包括數字(1)+ 1等於2。然后檢查如果該數字可被for循環中的i相等,並且只要發生這種情況就將x加1。 迭代發生后,您然后檢查x是否為2,這是正確的,因此在for循環之后輸入if塊。 每次擊中該秒(如果阻塞)時,您都會通過添加一個來計數。 現在請記住,只要if x == 2且每次迭代都將滿足它,它就會一直更新,因此最終您的while循環將因此中斷。 因此,為什么它不會永遠持續下去。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM