簡體   English   中英

如果2%2為0,為什么2會被打印?

[英]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塊中打印出來的原因。

它還有助於將ifelse塊保持在相同的縮進級別,以避免混淆計算機。

暫無
暫無

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

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