num = 2
if num > 1:
for i in range(2, num):
if (num % i) == 0:
print(num, "is not a prime number")
break
else:
print(num, "is a prime number")
else:
print(num, "is not a prime number")
上面的代碼有效。我在理解邏輯時遇到問題。當n=2,并且第一次迭代在for回圈中運行時,i=2,
所以 num=2,i=2。因此,num%i==0,它應該中斷并列印'2不是素數'
我對編碼相當陌生。所以,我感謝所有的幫助。謝謝你。
uj5u.com熱心網友回復:
當num == 0for 回圈永遠不會進入時,因為range(2, 2)just likerange(0)為零。
現在,您的 for 回圈有一個else子句。這個 else 子句在 2 種情況下命中: for 回圈完全運行到最后而不會在中間的某個地方中斷,或者 for 回圈根本不運行,就像你的情況一樣。一般來說,這兩種情況實際上是一種情況。for回圈的else子句在回圈完全運行時命中,根本沒有運行,因為range(0)可以看作是對完全運行成功的改寫,因為0是這個for回圈的全部范圍。
因此,您的代碼直接轉到 for 回圈的 else 子句,并且num%i==0永遠不會檢查條件。
uj5u.com熱心網友回復:
問題是您假設該值正在進入 for 回圈。澄清一下,如果你運行
for i in range(n,n):
print(i)
您將不會收到任何回復。
因此,由于您的代碼具有 for-else 條件,因此這種情況可以理解為:
if num>2:
for i = 2 to num:
checking
else:
print "not a prime"
:)
對于其余代碼只是檢查任何先前的數字(num)是否可以除以 num。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/415937.html
標籤:
下一篇:如何解決中文WhispersPython問題'AttributeError:'Graph'objecthasnoattribute'node'
