我必須確定列表中的所有數字是否都是素數,然後根據結果返回布爾型「True」或「False」語句。我在for循環中創建了一些條件語句,以查看數字是否爲素數。我的For循環不會遍歷列表
下面的代碼:
def all_primes(xs):
is_prime = None
for i in xs:
if i < 2:
is_prime = False
return is_prime
break
elif (i % 2 == 0) and (i % i == 1):
is_prime = False
return is_prime
break
else:
is_prime = True
return is_prime
的問題是,我看到這個在Python展臺,for循環停止檢查列表中的第一個值之後迭代。我不明白爲什麼,因爲語法與我過去使用的循環相同。
我插入了一些示例值,如:all_primes([5,2,11,37])
或all_primes([5,2,4,37])
,返回值始終爲true,因爲5是列表中的第一個數字,也是唯一正在迭代的數字。
任何想法爲什麼?
你'return'在你的每個分支。這立即擺脫了功能。在for循環完成之後,您需要將代碼設置爲'return'。 – roganjosh
另外,'i%i''總是0,所以第一個'elif'的'和'語句永遠不會是真的。 –
啊,我沒有明白。這是否意味着我必須擺脫休息時間?我正在使用中斷,因爲即使單個值不是素數,循環也需要關閉。 –