python 统计学生的课程成绩 课程名称和成绩用空格分隔,每门课程一行,遇空行按enter录入。按要求输入结束后得出得分最高的课程名称及成绩,得分最低的课程名称及成绩,平均分(保留2位小数) 本题要求连续输入课程名称和分数,直到输入内容为空时按enter键结束输入。 由于输人次数未知,因此可采用 while 循环实现。输人一门课程名称及成绩后,将输人的课程名称和成绩字符串通过 split()方法 用空格进行切分,生成一个小列表,即[‘语文’,‘87’]列表作为元素添加到列表中生成一个二维列表ls.即[‘语文’,’87’],[‘数学’,90’],[‘英语’,’92’],[‘化学’,’85’]。在循环执行过程中,取小列表里的“成绩”元素,并将其转化为数值和求累加和。注意累加器、在循环开始前要先给定初值 0。利用max()对ls 取最大值,取最大值的依据是二维列表1ls中每个小列表里的“成绩”元素,取出的最大值为[英语!,“921,再将最大值中的“课程名称”元素和“成绩”元素分别赋值给maxe 和maxs。同理,可以利用 min()取最小值。平均分可以通过累加和s除以二维列表 ls 的长度实现。
时间: 2024-02-13 07:05:43 浏览: 139
好的,下面是代码实现:
```python
ls = []
while True:
line = input()
if line == '':
break
course, score = line.split()
ls.append([course, int(score)])
total_score = 0
for item in ls:
total_score += item[1]
avg_score = round(total_score / len(ls), 2)
max_score = max(ls, key=lambda x: x[1])
min_score = min(ls, key=lambda x: x[1])
max_course, max_value = max_score[0], max_score[1]
min_course, min_value = min_score[0], min_score[1]
print(f"最高分课程:{max_course},成绩:{max_value}")
print(f"最低分课程:{min_course},成绩:{min_value}")
print(f"平均分:{avg_score}")
```
代码中使用了一个 `while` 循环来读取用户输入的课程名称和成绩,每次读取一行,然后通过 `split()` 方法将其分割成课程名称和成绩两个部分,并将其作为一个小列表添加到二维列表 `ls` 中。
在读取完所有数据后,我们遍历 `ls` 列表,累加每个小列表中的第二个元素(即成绩),计算出总成绩。然后根据总成绩和列表长度计算出平均分。
接着,使用 `max()` 和 `min()` 分别取得最高分和最低分的小列表,然后从这两个小列表中取出课程名称和成绩值,赋值给相应的变量。
最后,我们将结果输出到屏幕上。需要注意的是,我们使用了 f-string 来格式化输出结果,使其更加清晰易懂。
阅读全文