0

while ループが機能しない理由について誰か助けてもらえますか? ユーザーに 1、2、または 3 のいずれかを選択するように強制し、先に進めないようにしていますが、1、2、または 3 のいずれを入力しても、常に別の番号を入力したと表示され、「選択してください」と表示されます。レベル 1、2 または 3"

level = input("Enter your level by typing 1, 2 or 3\n")
int(level)

levelSelect = 1
while levelSelect == 1:
   if level != int(1) or level != 2 or level != 3:
      level = input("Please choose level 1, 2 or 3\n")
      int(level)
   else:
      print("You have selected level", level)
      levelSelect = 0
4

4 に答える 4

4

ラインint(level)はあなたが思っていることをしません。文字列から整数を作成し、それを返します。その場では作動しません。このため、ステートメントに到達するifと、文字列を常に等しくない整数と比較しています。

あなたはおそらく欲しい:

level = int(level)

in補足として、条件は演算子を使用して記述することもできます。

if level in (1,2,3):
   print("level is ...")
else:
   print("pick again!")
   #other code ...
于 2013-01-09T12:40:11.737 に答える
1

レベルを整数として割り当てることに関するmgilsonの回答を参照してください。ただし、「レベル」が正当であるかどうかを判断するロジックも間違っています。

変化する:

if level != int(1) or level != 2 or level != 3:

為に:

if level not in (1,2,3)
于 2013-01-09T12:44:33.293 に答える
0

mgilsonはここで主要な問題を示していますが、コードを改善するための提案をします。

while True:
    level = input('Enter level: ')
    if level not in ('1','2','3'):
        print('Try again!\n')
    else:
        print('You chose level ', level)
        break
于 2013-01-09T12:47:30.410 に答える
0

私はこれがあなたが望むものだと思います (Inbar Rose の小道具)

def get_level():
    while True:
        level = int(input("Enter your level by typing 1, 2 or 3\n"))
            if level in [1, 2, 3]:
                return level
于 2013-01-09T12:45:09.217 に答える