![](/img/trans.png)
[英]Why does the end=' ' argument in print() get printed twice when used in a loop?
[英]Why does 2 get printed if 2%2 is 0?
總之,我知道2是素數,因為它可以被1整除,但為什么如果2%2 = 0並且范圍在2和你正在檢查的數字之間仍然打印2,在這種情況下是2.它不應該從3開始嗎?
for num in range (1, 1000):
if num > 1:
for i in range (2, num):
if (num % i ) == 0:
break
else:
print (num)
我預計3會成為第一個輸出。
打印2
是因為for i in range(2, num)
當num == 2
時不執行迭代。 這是因為range()
的第二個參數不包含在range()
生成的列表中。 因此,對於外部循環的2
次迭代,等效的迭代代碼是:
num = 2
if num > 1:
for i in []:
if (num % i ) == 0:
break
else:
print (num)
這將打印2
因為'break'行不會被執行。
Python for
循環包含第一個數字,但不包括最后一個數字。 因此, for i in range(2,2)
的子句實際上不會返回任何數字。 這就是為什么數字2會在你的else
塊中打印出來的原因。
它還有助於將if
和else
塊保持在相同的縮進級別,以避免混淆計算機。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.