2013-06-25 88 views
1

我有這個while循環正在測試以確保用戶輸入1,2或3.一旦用戶輸入1,2或3,循環就會一直持續下去,我無法擺脫它。Python:循環不會隨着「break」退出

while True: 
    try: 
     filterselection = raw_input("Please select a filter (1, 2, or 3): ") 
     if filterselection == "1" or filterselection == "2" or filterselection == "3": 
       filterselection = int(filterselection) 
       break 

     else: 
      print "Not a valid number try again!" 
     except TypeError: 
      print "Lol, that's not a number try again!" 
+0

問題是...? –

+6

您的縮進似乎不一致。 – sth

+2

而不是多個'或',你可以使用'in'運算符並且說'如果filters(1','2','3'):'。爲了您的健康。 –

回答

10

請勿混用標籤和空格!這是我看到粘貼您的原始代碼轉換成顯示空白字符編輯時:

enter image description here

的箭頭是標籤和點是空格,不要這些,因爲如果搭配是非常重要的你做的代碼你看到的可能不是Python解釋器看到的。

+1

+1:這裏有一個很好的參考:[「你不能在Python中安全地混合標籤和空格。」]( http://www.secnetix.de/olli/Python/block_indentation.hawk) – jfs

+0

確保代碼從Geany正確複製到本網站的最佳方法是什麼?因爲當我複製和粘貼時,這裏的一切看起來都很奇怪。 – Binka

+0

@Binka我的猜測是所有的東西看起來很奇怪,因爲代碼中有一些標籤和空格的組合,一些網站或程序會顯示與8個空格相同寬度的標籤,其他寬度爲4個空格。 –