统计学生成绩(1)Python

输入10个学生的成绩,统计平均成绩,最高成绩和最低成绩,第一行输出平均成绩(保留1位小数),第二行输出最高成绩,第三行输出最低成绩)


s = []
for i in range(10):
    n = int(input())
    s.append(n)
print(“%.1f”%(sum(s)/len(s)))
print(max(s))
print(min(s))

代码

scores = input("请输入10个学生的成绩,格式(中文逗号)33,44,55,66……\n")
scores1 = scores.split(",")
scores2 = list(map(int, scores1))
print("最高成绩:%d" % max(scores2))
print("最低成绩:%d" % min(scores2))
print("平均成绩:%.1f" % (sum(scores2)/len(scores2)))

结果输出

请输入10个学生的成绩,格式(中文逗号)33,44,55,66……
1,2,3,4,5,6,7,8,9,10
['1', '2', '3', '4', '5', '6', '7', '8', '9', '10']
最高成绩:10
最低成绩:1
平均成绩:5.5

思路

用scores接收从键盘上输入的10个成绩,现在规定各分数用","分割,也可以用其他标志分割,看需求(如果用for循环接收参数就不用再进行此处理了)
1、此时scores是一串字符33,44,55,66……,需要分割成一个list列表,方便后续求和等处理
2、通过split("分割标志")分割,分割的结果是list类型
3、这个时候scores1中的元素都是str类型的,需要转换成int
4、先借助map()函数处理每个元素,再用list()函数转成list类型数据
5、此时scores2是list类型且里面每个元素都是int型的数据,可以直接借助内置函数max、min、sum等进行计算

一个实现:


grade=input("请输入10个学生成绩,以逗号分隔:") 
grade=grade.split(',')  #将输入读取转换成列表

#初始化最大值,最小值,以及和
max=0
min=int(grade[0])  
sum=0
#遍历成绩列表,计算最大值,最小值,以及和
for i in grade:
    temp = int(i)
    sum = sum + temp
    if (max<temp):
        max= temp
    if (min>temp):
        min = temp
 #打印结果
avg=round(sum/10.0,1) #计算平均成绩,保留一位小数
print(str(avg))
print(str(max))
print(str(min))