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

我认为这就是您想要的(与 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 回答
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 回答