Python虽然循环与多个条件

问题描述:

任何人都可以帮助为什么我的while循环不工作? 它迫使用户选择1,2或3,并且不让他们继续进行,但无论你是否输入1,2或3,它总是会说你输入了一个不同的数字,所以说“请选择级别1,2或3“Python虽然循环与多个条件

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 
+2

另一方面,'int(1)'总是*可以被'1'替代。 – mgilson

+0

......除非你做了一件傻事,比如重新命名“int”。 –

+0

您需要在if语句中将“或”更改为“和”。它会一直失败,因为级别不能是1 2和3. –

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) 
+1

为什么你说*逻辑*是错的? - 风格并不理想,但我认为我没有看到逻辑问题。 – mgilson

+1

对不起,是的,我错了使用错误。 – Jdog

我想这是你想要的(与因巴尔玫瑰道具)

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 
+1

为什么不把整个事情放入while循环? http://pastebin.com/ArVpMNwF:'def choose_level(): True: level = int(input(“通过键入1,2或3来输入您的级别\ n”)) if [1, 2,3]: 返回级别 –

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