2013-02-20 98 views
0

這段代碼有問題。 不知怎的,如果我們輸入'register''Register'作爲輸入,它會進入寄存器功能,但是在打印else之後:Aswell ("Bad input");我做了更多這些,但無法找到在這一個錯誤。if語句的Python問題

請幫幫我。謝謝!這裏是我的代碼:

def Boot(): 
     print "Type 'Login' + accountname to login." 

     x = raw_input("> ") 
     Name = x.split() 

     if x == "Register" or x == "register": 
      print "Registerbla" 

     if Name[0] == "Login" or Name[0] == "login": 
      print "Loginblabla" 
     else: 
      print "Bad input" 

所以我輸入後看到的是: Registerbla 壞輸入

+5

我想你想「elif的名字......」,而不是「如果名稱.. 。「 – dutt 2013-02-20 13:59:12

+1

在編輯你的文章時,我注意到你的源文件中有空格和製表符。我希望這只是試圖讓它在堆棧溢出的渲染器中正確顯示 - 但是,如果不是這樣,那在python代碼中是非常糟糕的。你總是可以用'python -t script.py'運行python來查看你是否以不好的方式混合了空格和製表符。 – mgilson 2013-02-20 13:59:38

回答

1

,當你在register鍵入或Register

if Name[0] == "Login" or Name[0] == "login":

評估爲假,打印Bad input

2

你錯過了您的if語句的else部分。沒有它,你實際上檢查兩個單獨的if語句:註冊部分和登錄/錯誤輸入部分。相反,你應該使用elif

if x == "Register" or x == "register": 
     print "Registerbla" 
    elif Name[0] == "Login" or Name[0] == "login": 
     print "Loginblabla" 
    else: 
     print "Bad input" 

另外,還要考慮改變你的語句來檢查對小寫字母,像

if x.lower() == "register": 
    # Now any capitalized variant of register will work! 
+0

謝謝,它解決了 – 2013-02-20 20:47:00