[英]Python: Prime numbers and the in range()
我正在學習python並正在研究此問題: Python-質數練習這是我的問題:當n = 2時,范圍將是(2,n),換句話說,范圍是2到2-1 = 1。
for x in range(2, n):
if n % x == 0:
print("{} equals {} x {}".format(n, x, n // x))
return False
else:
print(n, "is a prime number")
return True
一種。 會是2%2嗎?
灣 如果數字是偶數,它將打印
A等於B x C
條件為真時,循環會中斷嗎?還是會結束循環?
C。 循環之外的其他東西嗎? if語句對應什么? (我知道這是if n % x == 0:
:),但是看起來好像在循環之外呢? 我試圖運行它,並且理解了,但是后來我感到困惑。
您似乎對for
循環中的else
感到困惑。
您不是唯一的一個。
在Python中, for
循環可能在else
節的末尾,除非所有的break
語句都在循環完成后執行。 是的,它不是很直觀。
因此,您應將else
部分作為for
循環的最后一部分閱讀。
def looptest(loops=5):
for i in range(loops):
print "i", i
if i == 3:
print "in if"
return
else:
print "in else of the loop"
並嘗試循環== 5:
>>> looptest(5)
i 0
i 1
i 2
i 3
in if
對於循環2的數量,我們不期望返回,我們將遍歷循環的else
部分:
>>> looptest(2)
i 0
i 1
in else of the loop
注意, return
必須在函數內,嘗試在控制台上返回將導致錯誤。
在Python控制台上嘗試:
>>> range(2, 2)
[]
return結束當前功能或在整個模塊中運行。 因此, return
后,將不會再執行代碼同一部分中的其他代碼(特有try
, finally
,context manager等例外,但這與您的代碼無關)。
一種。 No. range(2,2)
在Python中是一個空集。
灣 條件為真時,包含循環的函數將返回,並且循環不會結束。 這是因為return
調用比if
語句低一級。
C。 我很確定您希望else
與for
相對應。 Python擁有此for ... else語法,如果for
循環正常終止(即,不帶break
),則執行else
子句的內容。
換句話說,我想你要這樣:
for x in range(2, n):
if n % x == 0:
print("{} equals {} x {}".format(n, x, n // x))
return False
else:
print(n, "is a prime number")
return True
編輯:
當然,我可以解釋整個循環。 這個想法是這樣的:對於介於2和n之間的每個數字,檢查該數字是否為x的因數。 如果是,則n不是質數,我們終止循環。 但是,如果一直進行到循環結束,就知道n是質數,因為它在2到n之間沒有因數。 然后,else子句插入,並打印該數字為素數。
看一下這個函數:
def isPrime(n):
for i in range(2, int(n**0.5) + 1):
if n % i ==0:
return False
return True
遍歷每個可能的選項不一定是最好的選擇。 請記住,范圍永遠不會超過數字的平方根。
同樣值得注意的是,您的輸出將僅顯示第一組因子。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.