-1

私は単純な小さな平均計算機をやっています。

def avg():
    sumSoFar = 0
count = 0
numCount = 0

while numCount != "":
    numCount = eval(input("Please enter a number or press <enter> to quit: "))
    sumSoFar += numCount
    count += 1


print("The average of these numbers is: ", sumSoFar/count)

そして、私はエラーを受け取り続けます:

numCount = eval(input("Please enter a number or press <enter> to quit: "))
File "<string>", line 0

Syntax Error: unexpected EOF while parsing

問題は何ですか?

4

2 に答える 2

2

これは、評価する式がないためにinputa が発生するため、「<enter> を押して終了する」ときに発生すると想定しています。SyntaxError

input(prompt)と同等eval(raw_input(prompt))です。したがって、それは正しくありませんeval。入力行が (文字列を表す) 数値の場合、 はinput数値を返し、数値evalの はTypeErrorです。しかし、あなたは を取得していると言っているSyntaxErrorので、入力は空白行から始まっていると結論付けます。

使用したい関数だとは思いませんinput()が、使用する場合、特に例外が発生したときにループを終了させたい場合は、tryブロック内で呼び出す必要があります例外をキャッチできるようにします。一方、を使用raw_inputすると、空の文字列を受け取ったかどうかをテストできますがeval、文字列を呼び出す前にそれを行う必要があるため、テストを条件に入れることwhileはできません。

于 2013-05-07T03:23:45.617 に答える