将一组考试成绩通过键盘输入,计算及格率、平均分、最高分和最低分。
输入格式:
成绩在一行输入,数据间用空格分隔。
输出格式:
输出及格率、平均分、最高分、最低分,精确到小数后1位。
见样例
输入样例:
80.5 90 100 45 15 65.5
输出样例:
及格率:66.7%
平均分:66.0
最高分:100.0
最低分:15.0
代码展示:
m_list = list(input().split(" "))
m_list_float = [float(x) for x in m_list] #将字符串列表转换为浮点数列表
a = len(m_list_float) #计算分数列表的长度
m1 = max(m_list_float)
m2 = min(m_list_float)
sum = 0
c = 0
for i in range(len(m_list_float)): #遍历分数列表
if (m_list_float[i]) >= 60: #如果当前分数大于等于60,则认为是及格的
c+=1
sum = sum + (m_list_float[i]) #将当前分数加到总分中
average = sum / len(m_list_float)
m3 = c / a
m4 = float("%.3f" % m3) #观察最终输出只保留一位小数,这里保留三位小数是为了后续计算的精度
#使用{:.1%}格式化输出为百分数
print('及格率:{:.1%}\n'
'平均分:{:.1f}\n'
'最高分:{:.1f}\n'
'最低分:{:.1f}'.format(m4,average,m1,m2))
需要注意的是:
[float(x) for x in m_list]
这是一个列表推导式,它遍历 m_list 中的每个元素 x,并将其转换为浮点数。这种语法是 Python 中创建新列表的一种简洁方式。
并且Python中的内置函数 max()
和 min()
可以迅速地从可迭代对象(例如列表、元组、集合等)中找出最大值和最小值。{:.1%}
用于将小数格式化为百分数并保留一位小数