带输入校验的数值统计程序:输入END计算和、均值、标准差等指标
Python 数值统计程序实现
功能覆盖
- 输入逻辑:持续接收用户输入,兼容整数、浮点数格式;输入
END(不区分大小写)时终止输入流程;非数值类输入自动过滤,弹出提示后允许用户重新输入,程序不会报错终止 - 基础统计:输入结束后输出所有有效数值的总和、平均值、总体标准差、最大值、最小值
- 拓展功能:自动生成去重后的升序数值列表,同步展示每个数值的出现频率
完整可运行代码
import math def number_statistics(): valid_numbers = [] while True: input_content = input("请输入数值(输入END结束统计):").strip() # 检测结束指令 if input_content.upper() == "END": break # 校验输入是否为合法数值 try: current_num = float(input_content) valid_numbers.append(current_num) except ValueError: print("*输入无效,请输入合法整数/浮点数,或输入END结束流程*") continue # 处理无有效输入的场景 if not valid_numbers: print("\n未采集到任何有效数值,无统计结果") return # 计算基础统计指标 total_sum = sum(valid_numbers) total_count = len(valid_numbers) average = total_sum / total_count # 计算总体标准差 variance = sum((x - average) ** 2 for x in valid_numbers) / total_count std_deviation = math.sqrt(variance) max_num = max(valid_numbers) min_num = min(valid_numbers) # 输出基础统计结果 print("\n===== 基础统计结果 =====") print(f"总和(sum):{total_sum:.3f}") print(f"平均值(average):{average:.3f}") print(f"标准差(Standard Deviation):{std_deviation:.3f}") print(f"最大值:{max_num:.3f}") print(f"最小值:{min_num:.3f}") # 拓展功能:去重排序+频次统计 frequency = {} for num in valid_numbers: frequency[num] = frequency.get(num, 0) + 1 sorted_unique_nums = sorted(frequency.keys()) print("\n===== 拓展:去重数值频次表(升序) =====") for num in sorted_unique_nums: print(f"{num:.3f}:出现{frequency[num]}次") if __name__ == "__main__": number_statistics()
运行示例
请输入数值(输入END结束统计):2 请输入数值(输入END结束统计):5.5 请输入数值(输入END结束统计):2 请输入数值(输入END结束统计):test *输入无效,请输入合法整数/浮点数,或输入END结束流程* 请输入数值(输入END结束统计):7.2 请输入数值(输入END结束统计):END ===== 基础统计结果 ===== 总和(sum):16.700 平均值(average):4.175 标准差(Standard Deviation):2.158 最大值:7.200 最小值:2.000 ===== 拓展:去重数值频次表(升序) ===== 2.000:出现2次 5.500:出现1次 7.200:出现1次
内容的提问来源于stack exchange,提问作者VANSH SAINI
相关产品推荐
相关产品推荐

