
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 AzureDeer OP 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 jmc891205 Jan 7, 2021 via iPhone 报的啥错 |
3 cominghome Jan 7, 2021 原因出在 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 ``` |
4 cominghome Jan 7, 2021 我靠,双击空格直接发出去了。。不过应该已经讲清楚了。。 变量作用域这一块可以读一下《流畅的 Python 》第七章 |
5 Perry Jan 7, 2021 via iPhone 请先学会如何提问以及如果通过报错找到错误。 |
6 kikikiabc Jan 7, 2021 via iPhone 用了全局变量,函数里面要加一个 global sum_score 声明。 |
7 lpts007 Jan 7, 2021 via Android python 工作不多了,go 吧 |
8 XIVN1987 Jan 7, 2021 sum_score 不能用全局变量吧,难道你每次调用 get_average()都要累计之前的分数? 那你计算平均分的时候只除以本次调用的科目数,,平均分岂不是越来越高、单调递增了~~~^_^~~~ |
9 sxbug01 Jan 7, 2021 用函数返回值啊 |
10 huichao Jan 7, 2021 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) |
11 tanwill12138 Jan 7, 2021 |