繁体   English   中英

具有多个条件的Python While循环

[英]Python While Loop with multiple conditions

任何人都可以帮助我为什么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

int(level)行没有执行您认为的操作。 它从字符串创建一个整数并返回它。 它没有在原地运行。 因此,当您进入if语句时,您正在将字符串与始终不相等的整数进行比较。

您可能想要:

level = int(level)

附带说明,条件也可以使用in运算符编写:

if level in (1,2,3):
   print("level is ...")
else:
   print("pick again!")
   #other code ...

请参阅mgilson关于将分配级别作为整数的答案,但是您在确定“级别”是否合法时的逻辑也是错误的。

更改:

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

对于:

if level not in (1,2,3)

我想这就是您想要的(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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM