1

为什么当输入正确的输入(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 之间的数字,有人知道出了什么问题吗?

4

2 回答 2

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"
于 2012-12-29T21:57:48.900 回答
1

in grade=raw_input("Please enter your marks for Maths : "),grade是一个字符串,而不是数字。尝试

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

如果用户输入错误,为了防止程序被终止,你需要使用异常,像这样

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
于 2012-12-29T21:53:13.747 回答