完成python实验:动态输入10个成绩,分别统计这组数据的平均值、标准差、中位数、及格率;(要求输入10个数据后能够自动停止输入,输入数值的范围为0-100的整数,输入异常时有相应的提示,有小数的保留一位小数)
时间: 2024-11-15 09:25:35 浏览: 11
求值_python_方差_中位数_平均值_
5星 · 资源好评率100%
在Python中,我们可以使用`input()`函数获取用户输入,`try-except`结构处理异常,并利用内置库如`math`来进行计算。这里是一个简单的程序示例:
```python
import math
def calculate_scores():
scores = []
total = 0
count = 0
while True:
try:
score = int(input("请输入一个0-100分的成绩(输入'q'退出):"))
if score < 0 or score > 100:
print("输入错误,分数应为0到100之间的整数,请重新输入。")
else:
scores.append(score)
total += score
count += 1
if score == 'q':
break
except ValueError:
print("输入错误,请输入一个整数或'q'退出。")
average = round(total / count, 1) if count != 0 else "无数据"
median = find_median(scores) if count > 0 else "无数据"
std_deviation = math.sqrt(find_variance(scores)) if count > 1 else "无数据"
return average, median, std_deviation, count / len(scores) * 100 if count > 0 else "无法计算"
def find_median(lst):
sorted_list = sorted(lst)
length = len(sorted_list)
if length % 2 == 0:
return (sorted_list[length // 2 - 1] + sorted_list[length // 2]) / 2
else:
return sorted_list[length // 2]
def find_variance(lst):
mean = sum(lst) / len(lst)
variance = sum((x - mean) ** 2 for x in lst) / len(lst)
return variance
avg, med, std_dev, pass_rate = calculate_scores()
print(f"平均值:{avg}")
print(f"中位数:{med}")
print(f"标准差:{std_dev} (保留一位小数)")
print(f"及格率:{pass_rate}%")
阅读全文