次のコードを作成しましたが、残りのコードを正常に終了できないというエラーが発生しています。最初の文字だけが偽であることを検出し、他の文字では検出できません。
コードは次のとおりです。
def isvalid(userg, valid_c, size):
'''(list, str, int) -> bool
Given userg, a list of single character strings;
valid_ch, a string; and size, an int;
return True if every character in user_guess list is in
valid_characters and if user_guess is of length guess_size.
Return False otherwise.
>>>isvalid(['A', 'B', 'C'], 'ABCDE', 3)
True
>>>isvalid(['Y', 'G', 'O', 'B'], 'YGOBPR', 4)
True
>>>isvalid(['X', 'G', 'O', 'B'], 'YGOBPR', 4)
False
>>>isvalid(['Y', 'G', 'O', 'B'], 'YGOBPR', 5)
False
>>>valid(['Y', 'G', 'O'], 'GOBPR', 4)
False
'''
for char in userg:
if len(userg) == size and char in valid_c:
return True
else:
return False
しかし、それだけでusergで非常に最初の文字がvalid_cでない場合はFalseを返すように動作します。たとえば、 'K'がvalid_cにないときは、最初の位置にないので、isvalid(['Y'、 'K'、 'O'、 'B']、 'YGOBPR'、4)はtrueを返します。 Yはそうです)ので、間違っている/間違っていると認識しません。私がisvalid(['K'、 'Y'、 'O'、 'B']、 'YGOBPR'、4)ならば、Kが最初であるため、Falseと認識します。誰でもこの助けてくれますか?私は他のことを試みたが、うまくいかなかった。ありがとう!
'return'文は何をしていますか?もし条件が 'True'であれば' continue'し、* for *ループの終わりにすべての項目がチェックされた後に 'true True'を返すべきです。 –
あなたがしたいのは、 'return len(userg)== sizeとall(charのuser_gでのchar)'です。それは実際にコメントの要件を直接翻訳したものです。 –