簡體   English   中英

為什么這是python中的無限循環?

[英]why is this an infinite loop in python?

我似乎無法弄清楚為什么這是python中的無限循環?

for i in range(n):
    j=1
    while((i*j)<n):
       j+=1

外循環不應該走n次。 每次遞增j直到等於n div i?

i0開始,所以while條件始終保持為真; 有關詳細信息,請參見范圍文檔

您可以創建一個“跟蹤”以顯示變量的狀態變化。

  1. n = 5; i = 0
  2. n = 5; i = 0; j = 1
  3. i * j <n-> 0 <5:n = 5; i = 0; j = 2
  4. i * j <n-> 0 <5:n = 5; i = 0; j = 3
  5. i * j <n-> 0 <5:n = 5; i = 0; j = 4
  6. i * j <n-> 0 <5:n = 5; i = 0; j = 5
  7. i * j <n-> 0 <5:n = 5; i = 0; j = 6

等等

您可以通過插入print語句來證明您的跟蹤是正確的。

如有疑問,請打印出來。

i從零開始,因此內部循環的條件始終為0*j < n ,這將始終為true。

因為i的初始值為0。

i的第一個值將為0。0等於0。

因為我是0! 並且i * j = 0

range(n)0開始,而不是1 0 * j將始終小於n

第一次通過外循環,內循環變成無限循環。 在那之后發生什么都沒關系。 沒有“無限遠之后”。

我是0重寫你像循環

for i in range(1,n):
j=1
while((i*j)<n):
   j+=1

使用此版本的range函數將創建一個從1而不是0開始的范圍

暫無
暫無

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

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