2012-12-29 335 views
1

爲什麼是這個while循環,當輸入了正確的輸入(數字0和100之間)無限while循環

grade = 110 
invalid_input = 1 
while grade< 0 or grade> 100: 
    if invalid_input >=2: 
     print "This is an invalid entry" 
     print "Please enter a number between 0 and 100" 
    grade= raw_input("Please enter your marks for Maths : ") 
    invalid_input +=1 

什麼都我把無論是數字或文本的(這是一個沒有結束無效的條目,請輸入一個數字0和100之間 沒有人一個知道什麼是錯?

回答

2

grade=raw_input("Please enter your marks for Maths : ")grade是一個字符串,而不是數量。嘗試

grade = int(raw_input("Please enter your marks for Maths : ")) 

爲了防止程序,如果用戶進行了錯誤的輸入被終止,您將需要使用一個exceptions,這樣

grade = 110 
invalid_input = 1 
while grade< 0 or grade> 100: 
    if invalid_input >=2: 
     print "This is an invalid entry" 
     print "Please enter a number between 0 and 100" 
    try: 
     grade= int(raw_input("Please enter your marks for Maths : ")) 
    except ValueError: 
     grade = -1 # just to enter another iteration 
    invalid_input +=1 
+0

循環結束,如果我輸入了號碼,但得到一個追溯錯誤,如果我輸入文本 – miguel

+0

這是我得到的消息 converter.py「,第13行,在 grade = int(raw_input(」請輸入你的數學標記:「)) ValueError:無效文字爲int()與基數10:'' – miguel

+0

當然,這是你的工作,照顧用戶的錯誤輸入 – gefei

2

grade應該轉換爲int。否則,由於它是一個字符串,所以while條件將始終保持滿足。

此外,你可以很容易地(也許更乾淨)使用Boolean用於invalid_input

invalid_input = True 
while invalid_input: 
    grade = int(raw_input("enter data")) 
    if grade >= 0 and grade <= 100: 
     invalid_input = False 
    else: 
     print "Please try again" 
+0

謝謝埃米特生病了試試這個 – miguel

+3

你也可以'if 0 <=等級<= 100:' –