编写一个基本的数学程序来帮助我理解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.这里发生了什么?
答案 0 :(得分:3)
你需要括号中的括号,如下:
average = (scores[0] + scores[1] + scores[2]) / 3
否则,您只是将scores[2]
除以3
。
答案 1 :(得分:3)
实际上你的代码是这样的:
average = 15+30+(45/3) #that's because / has higher precedence than +
所以要避免使用括号:
average = (scores[0] + scores[1] + scores[2]) / 3
BTW不要使用eval()
:
>>> inp=input("enter 3 scores: ")
enter 3 scores: 1,5,6
>>> scores=list(map(int,inp.split(",")))
>>> scores
[1, 5, 6]
答案 2 :(得分:3)
Division优先于添加,因此您应该使用括号:
average = (scores[0] + scores[1] + scores[2]) / 3
答案 3 :(得分:1)
试
average = (scores[0] + scores[1] + scores[2]) / 3
它被称为运算符优先级,而在python中,/
比+
“更强”。
来考虑一下,你应该使用
average = sum(scores)/len(scores)
它易于阅读,写作简短,而且更通用。
答案 4 :(得分:1)
您的代码根据基本算术优先级进行正确的计算,但您需要这样做:
(scores[0] + scores[1] + scores[2] ) / 3
...你的答案是30岁。
答案 5 :(得分: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 + ".")
这应该在执行时给你正确的结果。我希望这回答了你的问题。 :)
答案 6 :(得分:0)
这是基本的算术:加法前的除法。你实际上正在计算
average = scores[0] + scores[1] + (scores[2] / 3)
相反,您需要使用括号来覆盖运算符的优先级:
average = (scores[0] + scores[1] + scores[2]) / 3