2012-12-29 336 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:' –