Python计算常用统计量化

📅 2026/7/3 14:48:45 👁️ 阅读次数 📝 编程学习
Python计算常用统计量化

计算并输出计数、总和、平均值、最大值、最小值、极差、样本方差、样本标准差和中位数等常用统计量。

```python

import math

def get_numbers_from_input(prompt):

"""从用户输入中解析数字列表"""

while True:

raw = input(prompt).strip()

if not raw:

print("输入不能为空,请重新输入。")

continue

# 尝试用空格或逗号分割

parts = raw.replace(',', ' ').split()

nums = []

for p in parts:

try:

nums.append(float(p))

except ValueError:

print(f"无法解析 '{p}' 为数字,请重新输入。")

break

else:

if nums:

return nums

else:

print("未检测到有效数字,请重新输入。")

def calculate_stats(nums):

"""计算并返回统计字典"""

n = len(nums)

total = sum(nums)

mean = total / n

sorted_nums = sorted(nums)

minimum = sorted_nums[0]

maximum = sorted_nums[-1]

range_val = maximum - minimum

# 样本方差(除以 n-1)

if n < 2:

variance = None

std_dev = None

else:

variance = sum((x - mean) ** 2 for x in nums) / (n - 1)

std_dev = math.sqrt(variance)

# 中位数

if n % 2 == 1:

median = sorted_nums[n // 2]

else:

median = (sorted_nums[n // 2 - 1] + sorted_nums[n // 2]) / 2

return {

"count": n,

"sum": total,

"mean": mean,

"min": minimum,

"max": maximum,

"range": range_val,

"variance_sample": variance,

"std_dev_sample": std_dev,

"median": median

}

def main():

print("=== 数值统计工具 ===")

print("请输入若干个数字,用空格或逗号分隔(例如:1.5, 2, 3.8)")

nums = get_numbers_from_input("数字: ")

stats = calculate_stats(nums)

print("\n--- 统计结果 ---")

print(f"数据个数: {stats['count']}")

print(f"总和: {stats['sum']:.4f}")

print(f"平均值: {stats['mean']:.4f}")

print(f"最小值: {stats['min']:.4f}")

print(f"最大值: {stats['max']:.4f}")

print(f"极差: {stats['range']:.4f}")

if stats['variance_sample'] is not None:

print(f"样本方差: {stats['variance_sample']:.4f}")

print(f"样本标准差: {stats['std_dev_sample']:.4f}")

else:

print("样本方差: 数据少于2个,无法计算")

print(f"中位数: {stats['median']:.4f}")

if __name__ == "__main__":

main()

```

使用说明

1. 运行程序后,按提示输入数字(例如 12 34.5 67 89.1 或 12,34.5,67,89.1)。

2. 程序会依次显示各项统计结果,所有数值保留四位小数。

3. 如果输入少于2个数字,方差和标准差会显示“无法计算”。

个人建议

· 如需总体方差(除以 n),可修改 variance 计算公式为 sum((x - mean)**2) / n。

· 如需支持更多统计量(如四分位数、众数等),可自行扩展 calculate_stats 函数。