编写一个程序,接收用户动态输入10个0到100之间的整数成绩,然后计算并显示这组成绩的平均值、标准差、中位数以及及格率(假设60分为及格线)。程序应具备以下功能:自动终止输入、处理异常输入(例如,输入小数或超出范围的数字),并且对结果显示小数点后一位。
时间: 2024-10-25 16:08:36 浏览: 21
编写这样的程序可以使用Python语言,因为它有丰富的库支持如`statistics`用于计算统计量,`try-except`结构用于处理异常输入。下面是一个简单的示例:
```python
import statistics
def calculate_scores():
scores = []
while True:
try:
score = int(input("请输入一个0到100之间的整数成绩(输入'q'退出):"))
if score < 0 or score > 100:
raise ValueError("分数超出范围,请重新输入!")
elif score == 'q':
break
else:
scores.append(score)
except ValueError as e:
print(e)
# 计算平均值和标准差,保留一位小数
average = round(statistics.mean(scores), 1)
std_dev = round(statistics.stdev(scores), 1)
# 将成绩排序以找到中位数
sorted_scores = sorted(scores)
length = len(sorted_scores)
median_index = length // 2
if length % 2 == 0: # 如果偶数个数,取中间两个数的平均值
median = round((sorted_scores[median_index - 1] + sorted_scores[median_index]) / 2, 1)
else: # 如果奇数个数,直接取中间的那个数
median = round(sorted_scores[median_index], 1)
# 计算及格率
passing_count = sum(1 for s in scores if s >= 60)
pass_rate = round(passing_count / len(scores) * 100, 1)
print(f"平均分:{average}")
print(f"标准差:{std_dev}")
print(f"中位数:{median}")
print(f"及格率:{pass_rate}%")
calculate_scores()
```
在这个程序中,用户可以按照提示输入成绩,如果输入不符合要求会提示错误并要求重新输入。最后,程序会计算并展示所输入数据的相关统计信息。
阅读全文