目的:输入学生的成绩,自动算出总分平均分以及成绩排名
实现:
1、新建列表alist,存放学生成绩。
2、利用if语句分为两段:
(1)、不清楚具体的学生人数:
利用whlie true死循环,一直输入学生成绩,并将每次输入的成绩进行累加,赋值给sorce。
同时利用ls.append()函数将成绩追加到alist列表末尾。直到主动选择“退出”后,跳出循环。
同时打印输出最高分、最低分、平均成绩(通过len()求出列表内的学生人数)。并通过ls.sort()函数对列表里的元素(学生成绩)进行排序。
ls.sort()函数默认排序为从小到大,ls.sort(reverse=true)为从大到小进行排序。
while True: #因为不清楚具体人数,所以选择用死循环
grade = int(input('请输入成绩:'))
score = score+grade #分数累加
alist.append(grade) #将分数追加到列表alist
b = int(input('是否需要继续输入:【1、继续 2、退出】'))#判断是否继续输入成绩
if b!=1:
break
print(f'最高分:{max(alist)},最低分:{min(alist)},平均分:{score/len(alist)}')
alist.sort(reverse=1)
print(f'排名为:{alist}')
(2)、已知学生人数:
思路同上,通过输入的个数进行for循环,直到输完所有学生成绩,结束循环,进行最高分、最低分、平均分的计算输出,以及排名的输出。
i = int(input('请输入本次参考人数:'))
for a in range(i):
grade = int(input(f'请输入第{a+1}个学生成绩:'))
score = score + grade
alist.append(grade)
print(f'最高分:{max(alist)},最低分:{min(alist)},平均分:{score / i}')
alist.sort(reverse=1)
print(f'排名为:{alist}')
因为input()输入得到的信息数据类型被强行转换为str,所以使用int()将其转换为int型。
总代码如下:
#学生成绩管理
alist = []
score = 0
x = input('你是否已知本次参考人数:【Y/N】')
if x in 'nN':
while True: #因为不清楚具体人数,所以选择用死循环
grade = int(input('请输入成绩:'))
score = score+grade #分数累加
alist.append(grade) #将分数追加到列表alist
b = int(input('是否需要继续输入:【1、继续 2、退出】'))#判断是否继续输入成绩
if b!=1:
break
print(f'最高分:{max(alist)},最低分:{min(alist)},平均分:{score/len(alist)}')
alist.sort(reverse=1)
print(f'排名为:{alist}')
else:
i = int(input('请输入本次参考人数:'))
for a in range(i):
grade = int(input(f'请输入第{a+1}个学生成绩:'))
score = score + grade
alist.append(grade)
print(f'最高分:{max(alist)},最低分:{min(alist)},平均分:{score / i}')
alist.sort(reverse=1)
print(f'排名为:{alist}')
运行结果如下:
1、不清楚参加考试的人数
2、清楚本次参加考试的人数;