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

では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 に答える