无限循环

时间:2012-12-29 21:51:08

标签: python

当输入正确的输入(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 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

你的grade应该被转换为int。否则,因为它是一个字符串,while条件将始终保持满足。

此外,您可以轻松(也许更干净地)使用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"