scores = {'语文':89, '数学':95, '英语':80} sum_score = 0
def get_average(scores): for subject, score in scores.items(): sum_score += score print('现在的总分是%d'%sum_score) ave_score = sum_score/len(scores) print('平均分是%d'%ave_score)
get_average(scores)
scores = {'语文':89, '数学':95, '英语':80} sum_score = 0
def get_average(scores): for subject, score in scores.items(): sum_score += score print('现在的总分是%d'%sum_score) ave_score = sum_score/len(scores) print('平均分是%d'%ave_score)
get_average(scores)
|
1
scores = {'语文':89, '数学':95, '英语':80}
sum_score = 0 def get_average(scores): for subject, score in scores.items(): sum_score += score print('现在的总分是%d'%sum_score) ave_score = sum_score/len(scores) print('平均分是%d'%ave_score) get_average(scores) |
|
2
报的啥错
|
|
cominghomeJan 7, 2021
3
原因出在 sum_score 上。
你不赋值的时候,sum_score 是可以当成全局变量使用的,否则这个值会被当成局部变量使用。 解决办法有两个: 1. 在 get_average 内部将 sum_score 声明为全局变量 ``` def get_average(scores): global sum_score ... ``` 2. 在 get_average 内部声明 sum_score ``` # 删掉 def get_average(scores): sum_score = 0 ``` |
|
cominghomeJan 7, 2021
4
我靠,双击空格直接发出去了。。不过应该已经讲清楚了。。
变量作用域这一块可以读一下《流畅的 Python 》第七章 |
|
PerryJan 7, 2021 via iPhone
5
请先学会如何提问以及如果通过报错找到错误。
|
|
kikikiabcJan 7, 2021 via iPhone
6
用了全局变量,函数里面要加一个 global sum_score 声明。
|
|
lpts007Jan 7, 2021 via Android
7
python 工作不多了,go 吧
|
|
XIVN1987Jan 7, 2021
8
sum_score 不能用全局变量吧,难道你每次调用 get_average()都要累计之前的分数?
那你计算平均分的时候只除以本次调用的科目数,,平均分岂不是越来越高、单调递增了~~~^_^~~~ |
|
sxbug01Jan 7, 2021
9
用函数返回值啊
|
|
huichaoJan 7, 2021
10
def get_average(scores):
sum_score = 0 for subject, score in scores.items(): sum_score += score print('现在的总分是%d' % sum_score) ave_score = sum_score / len(scores) print('平均分是%d' % ave_score) get_average(scores) |
|
tanwill12138Jan 7, 2021
11
|