如何编写Python程序读取不确定数量的分数并统计高于、等于及低于平均分的分数个数?
Python实现分数统计:计算平均值并分类计数
嘿,我来帮你搞定这个需求!咱们一步步实现这个Python程序,核心就是三个关键环节:收集不确定数量的分数、计算平均值、统计不同区间的分数数量。
第一步:收集分数数据
因为分数数量不确定,咱们可以让用户持续输入分数,直到输入特定信号(比如空回车或者输入q)来结束输入。同时得处理用户可能输入的非数字内容,避免程序直接报错。
第二步:计算平均值
拿到所有有效分数后,先判断有没有收集到分数(避免出现除以0的错误),然后用分数总和除以数量得到平均值。
第三步:分类统计
遍历所有分数,分别统计高于平均值、等于平均值、低于平均值的数量。
下面是完整的可运行代码,每一行都加了注释方便你理解:
def main(): scores = [] print("请输入分数,输入空内容或'q'结束输入:") while True: # 获取用户输入并去除首尾空格 user_input = input().strip() # 判断是否触发结束输入的条件 if user_input == '' or user_input.lower() == 'q': break # 尝试将输入转为浮点数,捕获非数字输入的异常 try: score = float(user_input) scores.append(score) except ValueError: print("请输入有效的数字哦,重新输入吧!") # 处理没有输入任何分数的边界情况 if not scores: print("你没有输入任何分数,程序结束。") return # 计算平均值,保留两位小数更直观 average = sum(scores) / len(scores) print(f"\n所有分数的平均值为:{average:.2f}") # 初始化三个分类的计数器 above_avg = 0 equal_avg = 0 below_avg = 0 # 遍历分数完成统计 for s in scores: if s > average: above_avg += 1 elif s == average: equal_avg += 1 else: below_avg += 1 # 输出最终统计结果 print(f"高于平均值的分数数量:{above_avg}") print(f"等于平均值的分数数量:{equal_avg}") print(f"低于平均值的分数数量:{below_avg}") if __name__ == "__main__": main()
测试示例
比如你输入以下分数:
85 92 78 85 q
程序会输出:
所有分数的平均值为:85.00 高于平均值的分数数量:1 等于平均值的分数数量:2 低于平均值的分数数量:1
这个程序很灵活,不管你输入多少个分数都能处理,还能应对用户的无效输入,实用性拉满!
内容的提问来源于stack exchange,提问作者mirthstone




