Python代码用键盘输入两个列表,分别表示学生的语文和英语成绩(假设都按学号顺序排列), 计算每个学生语文和英语的总分。将语文和英语分别降序排序,并统计成绩为 80 分以 上的分数。
时间: 2024-09-30 13:02:02 浏览: 19
首先,你需要在Python中获取用户的输入,然后对数据进行处理。这里是一个示例代码,它演示了如何完成这个任务:
```python
# 导入必要的函数
from functools import cmp_to_key
def compare_scores(x, y):
# 指定比较规则,先降序比较英语成绩,再降序比较语文成绩
return (-y[1], -x[1]) if x[0] == y[0] else (x[0], y[0])
# 获取用户输入
nums_arts = input("请输入学生的语文成绩,以逗号分隔学号和成绩,例如:1,85,2,90...:")
nums_langs = input("请输入学生的英语成绩,同样以逗号分隔学号和成绩:")
# 将字符串转换为二维列表,每一行代表一个学生的信息
arts_scores = [list(map(int, score.split(','))) for score in nums_arts.split()]
langs_scores = [list(map(int, score.split(','))) for score in nums_langs.split()]
# 合并两组成绩
all_scores = [(i, arts + langs) for i, arts in enumerate(arts_scores) for langs in langs_scores]
# 对所有学生按照语文和英语的总分降序排序
sorted_scores = sorted(all_scores, key=cmp_to_key(compare_scores), reverse=True)
# 统计成绩大于等于80的学生数
count_above_80 = sum(score[1][0] + score[1][1] >= 160 for score in sorted_scores)
print(f"语文和英语总分降序排序后的成绩:{sorted_scores}")
print(f"成绩大于等于80的学生有:{count_above_80}人")
阅读全文