2017-11-16 3 views
-1

私はログインメニューの開始基準になるプログラムを書いています。 2つの入力のみを許可する必要があります。 "1"または "2"。 1を入力すると既存のユーザーとして続行されますが、2を入力すると新しいユーザーとして続行されます。私はこれらの2つの値の他に何も入力しないようにするためにwhileループを持っています。2つの変数を持つwhileループ(Pythonの "or"セクションを使用)

コードでは、コードを続行するには「1」を入力できますが、「2」は入力できません。私はオンラインで見たことがありますが、人々がコード化する方法やwhileループを見たことはありません。誰かがそれに必要な調整を加えることができますか?ありがとう。

編集: "bastelflp"による最高の回答。 orので

#Program menu 
YESorNo = input(""" 
[---------------------------------] 

     Welcome to the program! 

[---------------------------------] 

    Are you an existing user? 

1. [YES] 
2. [NO] 

----------------------------------- 
Type [1] for "YES" or [2] for "NO". 

""") 

while YESorNo.strip() != ("1" or "2"): 
    YESorNo = input(""" 
[---------------------------------] 

    Welcome to the program! 

[---------------------------------] 

    Are you an existing user? 

1. [YES] 
2. [NO] 

----------------------------------- 
Type [1] for "YES" or [2] for "NO". 

""") 

if YESorNo == "1": 
     print("Welcome back!") 

elif YESorNo == "2": 
     print("Welcome!") 
+0

あなたの質問に "修正" しないでください。質問と回答は将来の読者には意味をなさない可能性があります。解決策が他の回答と異なる場合は、答えとして投稿してください。問題が簡単だった場合は、質問を削除してください。それ以外の場合は、回答を受け入れることで、問題が解決されたことが示され、それ以上は何もする必要はありません。 – robinCTS

答えて

4
YESorNo.strip() != ("1" or "2") 

オペレータ、"1" or "2"は、比較の前に評価されます。文字列"1"は真実であるため、"1" or "2"の結果は"1"です。元の表現はYESorNO.strip() != "1"に簡略化されます。詳細については、Pythonの真実性についてお読みください。また、演算子の評価の順序についても学ぶ必要があります。

YESorNo.strip() != "1" and YESorNo.strip() != "2" 

またはこの:

not (YESorNo.strip() == "1" or YESorNo.strip() == "2") 

またはこの:

YESorNo.strip() not in ["1", "2"] 

正しい順序の最初の2つのテイク利点あなたの代わりにこれを行うことができ、問題を解決するには

あなたが望むことを実行するための操作評価。最後の選択肢は、元のコードに近い、比較するオプションのリストを使用します。

+1

これは常に真と評価されます... – Shadow

+0

@Shadowブール論理を修正しました。それを指摘してくれてありがとうございます。 –

+1

'YESORNo.strip()は[" 1 "、" 2 "]ではありませんが理解しにくいですか? – bastelflp

3
YESorNo.strip() != ("1" or "2") 

これは次の順序で評価されます。

YESorNo.strip() != "1" 

その後平等最初

ブラケット。

これを行う必要があります。

YESorNo.strip() not in ("1", "2") 

または

not (YESorNo.strip() != "1" and YESorNo.strip() != "2") 
関連する問題