私はPythonを学ぼうとしていますが、自分の学習目的で「クイズ」をプログラミングしているときに、この信じられないほど奇妙な異常に遭遇しました。ブール「または」関数は少し奇妙に動作しています。コードの一部は次のとおりです。
def answercheck(answer):
solved = 0
while solved == 0:
useranswer = raw_input("> ")
if useranswer == answer:
solved = 1
correct()
elif useranswer == "A" or "B" or "C" or "D":
solved = 1
incorrect()
else:
print "False input. Try again."
これが何が起こるかです。クイズの質問がクイズの出場者に出力された後、実際の回答を引数として回答チェック関数が呼び出されます。次に、ユーザーは回答を求められます。有効な答えは「A」、「B」、「C」、「D」だけにしたいので、「while」ループに入れました。
したがって、誰かがraw_inputを介して「useranswer」を「lol」のように役に立たないものにすると、「A」、「B」、「C」、または「D」が回答として挿入されるまで、ユーザーに再度プロンプトが表示されるのではないかと思います。ただし、そうではなく、「答え」ではない答えは正しくないと見なされます。
だから私はそれを少し書き直しました、そして私がこれをするときそれはうまくいくように見えます:
def answercheck(answer):
solved = 0
while solved == 0:
useranswer = raw_input("> ")
if useranswer == answer:
solved = 1
correct()
elif useranswer == "A":
solved = 1
incorrect()
elif useranswer == "B":
solved = 1
incorrect()
elif useranswer == "C":
solved = 1
incorrect()
elif useranswer == "D":
solved = 1
incorrect()
else:
print "False input. Try again."
これは私には少し冗長に思えます。最初のスクリプトで何が問題になっていますか?