3

(Python 2.7を使用)これはかなり初歩的なことだと理解していますが、次のステートメントが記述どおりに機能しないのはなぜですか。

input = int(raw_input())
while input != 10 or input != 20:
    print 'Incorrect value, try again'
    bet = int(raw_input())

基本的に私は答えとして10か20だけを受け入れたいです。これで、「入力」に関係なく、10、または20でも、「不正な値」が返されます。これらの条項は自己矛盾していますか?句の1つが正しければ、ORステートメントはOKと言うだろうと思いました。ありがとう!

4

5 に答える 5

17

あなたが必要ですand

while input != 10 and input != 20:

よく考えてみてください。inputがの場合10、最初の式はfalseであり、Pythonは2番目の式を評価しますinput != 2010は異なる形式20であるため、この式はに評価されtrueます。としてfalse or true == true、式全体はtrueです。
についても同じです20

于 2011-04-15T19:14:57.227 に答える
10

....またはあなたにとってより自然に見えるかもしれないそれを表現する別の方法:

while input not in (10, 20):
    # your code here...
于 2011-04-15T19:17:25.023 に答える
0

あなたはあることを意味しましbetinput。そして、10ではなく20ではない場合に入力するかどうかを言うつもりだったと思います。

input = int(raw_input())
while input != 10 and input != 20:
    print 'Incorrect value, try again'
    input = int(raw_input())
于 2011-04-15T19:15:21.003 に答える
0

私はあなたandがそこに欲しいと思います。

while input != 10 or input != 20:

これは永久に繰り返されますinput。が10の場合、最初の条件はfalseです。が20の場合input、2番目の条件はfalseです。input10と20の両方になることはできないため、。と同等trueです。

于 2011-04-15T19:15:40.457 に答える
0

「または」ではなく「および」が必要です。ブール論理について考えてください。

于 2011-04-15T19:15:58.100 に答える