用户输入考号、姓名和成绩,需用逗号隔开。按照降序输出考号、姓名和平均成绩。
比如请输入考号姓名成绩:203,张三,90
请输入考号姓名成绩:201,李四,60
请输入考号姓名成绩:203,张三,80
请输入考号姓名成绩:201,李四,70
请输入考号姓名成绩:
输出:203 张三 85
201 李四 65
python编程
另一种办法使用pandas,按照考号计算平均成绩输出显示:
import pandas as pd
data = []
while True:
input_str = input("请输入考号姓名成绩:")
if input_str == "":
break
input_list = input_str.split(",")
if len(input_list) != 3:
print("输入格式有误,请重新输入!")
continue
try:
score = int(input_list[2])
except ValueError:
print("输入的成绩不是数字,请重新输入!")
continue
id, name = input_list[:2]
data.append([id, name, score])
df = pd.DataFrame(data, columns=['考号', '姓名', '成绩'])
df['平均成绩'] = df.groupby('考号')['成绩'].transform('mean')
df = df.sort_values(by=['平均成绩'], ascending=False)
print(df[['考号', '姓名', '平均成绩']])
该回答引用ChatGPT
scores = {} # 定义一个空字典来存储成绩信息
while True:
input_str = input("请输入考号姓名成绩(按q退出):")
if input_str == 'q':
break
info = input_str.split(',')
if len(info) != 3:
print("输入格式错误,请重新输入!")
continue
try:
stu_id = int(info[0])
score = float(info[2])
except ValueError:
print("输入格式错误,请重新输入!")
continue
if stu_id not in scores:
scores[stu_id] = [info[1], score, 1] # 姓名、总成绩、科目数
else:
scores[stu_id][1] += score
scores[stu_id][2] += 1
# 计算平均成绩并按平均成绩降序排序
sorted_scores = sorted(scores.items(), key=lambda x: x[1][1]/x[1][2], reverse=True)
# 输出结果
for stu_id, data in sorted_scores:
name = data[0]
avg_score = round(data[1]/data[2], 2)
print(f"{stu_id} {name} {avg_score}")
运行结果
请输入考号姓名成绩(按q退出):203,张三,90
请输入考号姓名成绩(按q退出):201,李四,60
请输入考号姓名成绩(按q退出):203,张三,80
请输入考号姓名成绩(按q退出):201,李四,70
请输入考号姓名成绩(按q退出):q
203 张三 85.0
201 李四 65.0