リスト内のすべての数字が素数であるかどうかを判断し、結果に応じてブール値「真」または「偽」を返す必要があります。 forループの中にいくつかの条件文を作って、その数値が素数であるかどうかを調べました。My 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のビジュアライザでこれを見ました。文法が私が過去に使ったループと同じである理由は分かりません。
all_primes([5,2,11,37])
またはall_primes([5,2,4,37])
のようないくつかの値を接続しました。戻り値は、リスト内の最初の番号と反復される唯一の番号であるため、常にtrueです。
理由は何ですか?
'return'あなたの各支店でそれはすぐに機能から壊れます。 'for'ループが完了した後にコードを' return'するように設定する必要があります。 – roganjosh
さらに、 'i%i'は常に0なので、最初の' elif'の 'and'-statementは決して真ではありません。 –
ああ私はそれをキャッチしませんでした。それは私も休憩を取り除かなければならないという意味ですか?ループを閉じるには、単一の値ですら素早く終了する必要があるため、ブレークを使用しています。 –