Python返回低于平均分学生的学号

img


求解求解,输入学号成绩,统计平均分,将平均分以下学生的学号输出

下面是解答:

n = int(input())
score_per = []
number_per = []
low = []
for i in range(n):
    s = input()
    s = s.split(' ')
    number_per.append(s[0])
    score_per.append(int(s[1]))
score_aver = round(sum(score_per) / n,1)
for scr in range(len(score_per)):
    if score_per[scr] < score_aver:
        low.append(number_per[scr])
print(score_aver)
for per in low:
    print(per)

但是,如果脱离题目考虑,这个程序也可以设计得更有“人情味”:

n = int(input('请输入待评估的学生总数:'))
score_per = []
number_per = []
low = []
for i in range(n):
    s = input('请按照格式输入学生学号和分数:')
    s = s.split(' ')
    number_per.append(s[0])
    score_per.append(int(s[1]))
score_aver = round(sum(score_per) / n,1)
for scr in range(len(score_per)):
    if score_per[scr] < score_aver:
        low.append(number_per[scr])
print(f'平均成绩为:{score_aver}分。\n下面是本次低于平均分的学生的学号:')
if len(low) != 0:
    for per in low:
        print(per)
else:
    print('本次没有低于平均分的同学。')

希望对您有帮助!


n = int(input('小组人数:'))
score_dict = {}
score_sum = 0
for i in range(n):
    score_list = input().split(" ")
    sno = score_list[0]  # 学号
    score = float(score_list[1])  # 分数
    # print(sno, score)
    score_dict[sno] = score  # 添加进字典
    score_sum += score  # 统计分数
average_score = round(score_sum / n, 1)  # 求平均值,保留1位小数
print(average_score)  # 输出平均分
dict1 = sorted(score_dict.items(), key=lambda x: x[0])  # 按key排序

# print(dict1)
for sno, sc in dict1:
    # 判断分数是否低于平均分
    if sc < average_score:
        print(sno) # 输出学号