0

Pythonの数学計算を理解するのに役立つ基本的な数学プログラムを書いています。

私が書くなら

x = 15 + 30 + 45
print(x)

私は得る

90

私が書くなら

x = 90 / 3
print(x)

私は得る

30.0

しかし、私が書くと

def avg3():
    print("This program will calculate the average of 3 scores")
    scores = eval(input("enter 3 scores: "))
    average = scores[0] + scores[1] + scores[2] / 3
    avg = str(average)
    print("The average of the input scores is " + avg + ".")

avg3()

と入力

15, 30, 45

返されるのは

The average of the input scores is 60.0.

もちろん、私は 30 を期待しています。ここで何が起こっているのですか?

4

7 に答える 7

3

次のように、平均に括弧が必要です。

average = (scores[0] + scores[1] + scores[2]) / 3

それ以外の場合は、 で割るだけscores[2]です3

于 2012-09-29T19:36:40.447 に答える
3

実際にあなたのコードは次のようなことをしています:

average = 15+30+(45/3) #that's because / has higher precedence than +

そのため、括弧を使用しないようにします。

average = (scores[0] + scores[1] + scores[2]) / 3

ところで、これには使用しないでくださいeval()

>>> inp=input("enter 3 scores: ")
enter 3 scores: 1,5,6
>>> scores=list(map(int,inp.split(",")))
>>> scores
[1, 5, 6]
于 2012-09-29T19:36:51.293 に答える
3

除算は加算よりも優先されるため、括弧を使用する必要があります。

average = (scores[0] + scores[1] + scores[2]) / 3
于 2012-09-29T19:37:09.627 に答える
1

あなたのコードは基本的な算術優先順位に従って正しい計算を行っていますが、これを行う必要があります:

(scores[0] + scores[1] + scores[2] ) / 3

...あなたの答えが30になるために。

于 2012-09-29T19:41:07.120 に答える
1

あなたがする必要があるのは、括弧を追加することだけです:

average = scores[0] + scores[1] + scores[2]

したがって、コードは次のようになります。

average = (scores[0] + scores[1] + scores[2]) / 3

Python (またはその他のプログラミング言語) での演算の順序に基づいて、除算はインデックス演算子の前に行われます。したがって、プログラムで実際に行ったことは次のとおりです。

average = scores[0] + scores[1] + (scores[2] / 3)

したがって、全体として、完全なプログラムは次のとおりです。

def avg3():
print("This program will calculate the average of 3 scores")
scores = eval(input("enter 3 scores: "))
average = (scores[0] + scores[1] + scores[2]) / 3
avg = str(average)
print("The average of the input scores is " + avg + ".")

これにより、実行時に正しい結果が得られるはずです。これがあなたの質問に答えることを願っています。:)

于 2012-09-30T01:32:05.220 に答える
1

試す

average = (scores[0] + scores[1] + scores[2]) / 3

これは演算子の優先順位と呼ばれ、Python では/よりも「強力」です+

考えてみると、使用する必要があります

average = sum(scores)/len(scores)

読みやすく、書きやすく、より一般的です。

于 2012-09-29T19:36:36.323 に答える
0

これは基本的な算術演算です: 加算前の除算です。実際に計算している

average = scores[0] + scores[1] + (scores[2] / 3)

代わりに、括弧を使用して演算子の優先順位をオーバーライドする必要があります。

average = (scores[0] + scores[1] + scores[2]) / 3
于 2012-09-29T19:36:36.573 に答える