具有多个条件的Python While循环

具有多个条件的Python While循环,python,while-loop,Python,While Loop,有人能帮我解释一下为什么我的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:

有人能帮我解释一下为什么我的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
行intlevel不会做您认为它会做的事情。它从字符串创建一个整数并返回它。它没有在适当的地方运行。因此,当您使用if语句时,您正在将字符串与始终不相等的整数进行比较

您可能想要:

level = int(level)
作为旁注,也可以使用in运算符写入条件:

if level in (1,2,3):
   print("level is ...")
else:
   print("pick again!")
   #other code ...
行intlevel不会做您认为它会做的事情。它从字符串创建一个整数并返回它。它没有在适当的地方运行。因此,当您使用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:
用于:


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

更改:

if level != int(1) or level != 2 or level != 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

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

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

你为什么说逻辑是错误的这种风格并不理想,但我认为逻辑没有问题。你为什么说逻辑是错误的样式并不理想,但我认为逻辑上没有问题。另一方面,int1总是可以被1替换…除非你做了一些愚蠢的事情,比如重新绑定名称int。你需要在if语句中更改or to和。它总是会失败,因为级别不能是1、2和3。另一方面,int1总是可以被1替换……除非你做了一些愚蠢的事情,比如重新绑定名称int。你需要在if语句中更改or to和。它总是会失败,因为级别不能是1、2和3。为什么不把整个事情放到while循环中呢def choose_level:while True:level=int输入您的级别,方法是键入1、2或3\n如果在[1、2、3]中输入level:return level为什么不将整个内容放入while循环中def choose_level:while True:level=int输入您的级别,方法是键入1、2或3\n如果在[1、2、3]中输入级别,则返回级别