1. 动态输入10个成绩,分别统计这组数据的平均值、标准差、中 位数、及格率;(要求输入10个数据后能够自动停止输入,输入数值的范围为0-100的整数,输入异常时有相应的提示,有小数的保留一位小数,结果截图请包含正常和异常两种情况);Python
时间: 2024-10-25 22:10:27 浏览: 24
在Python中,你可以使用`math`模块计算平均值和标准差,`statistics`模块计算中位数,并通过条件判断来计算及格率。这里是一个简单的示例代码来满足你的需求:
```python
import math
import statistics
def input_scores():
scores = []
while True:
try:
score = float(input("请输入一个0到100之间的整数成绩(输入q结束输入):"))
if score < 0 or score > 100:
print("输入错误,成绩应在0到100之间,请重新输入。")
continue
else:
scores.append(score)
except ValueError:
print("输入错误,请输入一个数字。")
else:
if 'q' == score:
break
return scores
def calculate_stats(scores):
total = sum(scores)
avg = round(total / len(scores), 1) if scores else "无数据"
median = statistics.median(scores) if scores else "无数据"
std_dev = math.sqrt(sum((x - avg) ** 2 for x in scores) / len(scores)) if scores else "无数据"
# 判断及格率,通常60分及以上为及格
passing_rate = len([score for score in scores if score >= 60]) / len(scores) * 100 if scores else "无数据"
return {"平均值": avg, "标准差": std_dev, "中位数": median, "及格率": f"{passing_rate:.1f}%"}
# 获取用户输入并计算统计数据
scores = input_scores()
stats = calculate_stats(scores)
print("\n成绩统计数据:")
for key, value in stats.items():
print(f"{key}: {value}")
# 如果需要,可以将结果保存成图片,这里不做展示,实际操作会涉及图像处理库如matplotlib或PIL
```
运行这个脚本,按照提示输入成绩,结束后你会看到统计结果。如果输入不符合要求,会有相应提示。
阅读全文