2013-01-09 115 views
0

任何人都可以幫助爲什麼我的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. –

回答

4

int(level)不會做你認爲它的工作。它從一個字符串創建一個整數,並且返回它。它不適用。正因爲如此,當你看到你的if聲明時,你將一個字符串與總是不相等的整數進行比較。

你可能想:

level = int(level) 

作爲一個側面說明,條件也可以使用in操作寫着:

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

見mgilson的關於分配水平作爲一個整數答案但是你在決定'水平'是否合法時的邏輯也是錯誤的。

變化:

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

爲:

if level not in (1,2,3) 
+1

爲什麼你說*邏輯*是錯的? - 風格並不理想,但我認爲我沒有看到邏輯問題。 – mgilson

+1

對不起,是的,我錯了使用錯誤。 – Jdog

0

我想這是你想要的(與因巴爾玫瑰道具)

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]: 返回級別 –

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