计算平均值stu_scores = [('数学', 92), ('语文', 94), ('英语', 0), ('地理', 87), ('生物', 82),('历史', 85)]
时间: 2023-10-30 22:05:07 浏览: 26
可以使用以下代码计算stu_scores的平均值:
```
stu_scores = [('数学', 92), ('语文', 94), ('英语', 0), ('地理', 87), ('生物', 82),('历史', 85)]
sum = 0
count = 0
for subject, score in stu_scores:
if score > 0:
sum += score
count += 1
avg = sum / count
print("平均成绩:", avg)
```
输出结果为:
```
平均成绩: 87.5
```
相关问题
#pragma region 全局变量区域 /// ///全局变量区域 /// int stu_num = 0;//学生实际人数 int course_num = 0;//课程实际门数 int course_scores_sum[6] = { 0 };//课程总分 float course_scores_average[6] = { 0 };//课程平均分 int t = 0;//全局条件执行参数,用于t=1时退出while循环 //定义结构体类型“学生成绩” struct student_scores { int stu_id = 0;//学生学号 string stu_name = "";//学生姓名 int stu_score[6] = { 0 };//各门课程的成绩(课程最大不超过6门) int stu_sum = 0;//学生的总分 float stu_average = 0;//学生的平均分 int stu_rank = 0;//学生成绩的总排名 }; #pragma endregion解释这段代码
这段代码是一个C++程序中的全局变量定义和结构体类型定义。全局变量包括学生人数、课程门数、各门课程的总分和平均分、一个全局条件执行参数。结构体类型"student_scores"包括学生的学号、姓名、各门课程成绩、总分、平均分和总排名。其中,#pragma region和#pragma endregion是Visual Studio中的一种代码折叠功能,它们之间的代码块可以被折叠起来,以方便程序员在代码中快速定位和查看。
输入5位学生参加3门课程的考试成绩,要求保存到列表,然后根据学生的3门课总成绩从高到低的顺序输出学生成绩表。输出的格式如下 s_id s_name score1 score2 score3 total_score 1003 Ma Yi 86 88 92 266 1005 He Tao 85 85 88 258 1001 Hu Yang 88 79 90 257 1002 Shi Min 80 78 86 244 1004 Qi Jun 76 80 82 238STUCOUNT = 5 # 学生人数 SCORECOUNT = 3 # 每个学生的成绩数 stu_table = [] # 学生成绩表 # 输入数据 for i in range(STUCOUNT): s_id = int(input()) # 省略提示"输入学生的学号:" s_name = input() # 省略提示"输入学生的姓名:" s_scores = list(eval(input())) # 省略提示"输入学生的3个成绩(用逗号隔开的3个整数成绩):" stu_table.append([s_id, s_name, s_scores]) # 往成绩表中添加学生记录 # 对学生成绩表按总分从高到低的顺序排序 ########## 开始补全代码 ########## stu_table = sorted(stu_table, key=lambda stu: sum(stu_table[2:5]), reverse=True) ########## 结束补全代码 ########## # 输出成绩表 print("s_id s_name score1 score2 score3 total_score") for stu in stu_table: print(f"{stu[0]:4d} {stu[1]:<8s} {stu[2][0]:6d} {stu[2][1]:6d} {stu[2][2]:6d} {stu[3]:6d}")
这段代码存在一些问题,需要进行修改:
1. `stu_table`中每个学生的成绩应该是一个列表,而不是一个整数列表。因此,`s_scores`应该是一个列表,而不是使用`list(eval(input()))`来将输入字符串转换成列表。
2. 在对学生成绩表进行排序时,应该使用`sum(stu[2])`来计算每个学生的总分,而不是`sum(stu_table[2:5])`。
3. 在输出成绩表时,应该使用`stu[2][i]`来输出每门课的成绩,而不是使用`stu_table[2:5]`。
修改后的代码如下:
```
STUCOUNT = 5 # 学生人数
SCORECOUNT = 3 # 每个学生的成绩数
stu_table = [] # 学生成绩表
# 输入数据
for i in range(STUCOUNT):
s_id = int(input("输入学生的学号:"))
s_name = input("输入学生的姓名:")
s_scores = []
for j in range(SCORECOUNT):
score = int(input(f"输入学生{s_id}的第{j+1}门成绩:"))
s_scores.append(score)
stu_table.append([s_id, s_name, s_scores])
# 对学生成绩表按总分从高到低的顺序排序
stu_table = sorted(stu_table, key=lambda stu: sum(stu[2]), reverse=True)
# 输出成绩表
print("s_id s_name score1 score2 score3 total_score")
for stu in stu_table:
print(f"{stu[0]:4d} {stu[1]:<8s} {stu[2][0]:6d} {stu[2][1]:6d} {stu[2][2]:6d} {sum(stu[2]):6d}")
```
这样,就能够按照要求输入学生成绩,并按照总分从高到低的顺序输出学生成绩表了。
阅读全文