计算用户输入的一串任意长度的数据的最大值、最小值、平均值、中位数
时间: 2024-12-08 08:24:34 浏览: 13
为了计算用户输入的一串数据的最大值、最小值、平均值和中位数,你需要遵循以下几个步骤:
1. **获取输入**:首先,从用户那里获取一串数值,可以是一个列表、数组或是通过循环读取。
2. **初始化变量**:
- `max_value`:用于存储最大值,初始设为第一个值。
- `min_value`:存储最小值,初始也设为第一个值。
- `sum_values`:存储所有数值之和,初始为0。
- `sorted_list` 或 `numbers`:保存原始数值以便后续查找中位数。
3. **遍历并更新统计**:
- 对于每个数值,如果它大于当前`max_value`,则更新`max_value`;如果小于`min_value`,则更新`min_value`。
- 将数值添加到`sum_values`中。
4. **计算平均值**:
- 平均值等于总和除以数字的数量(即`len(sorted_list)`)。
5. **计算中位数**:
- 如果数据数量是奇数,中位数就是排序后的列表中间的那个数。
- 如果数据数量是偶数,中位数则是中间两个数的平均值。
6. **返回结果**:
- 最大值、最小值和平均值可以直接输出,对于中位数,需要在遍历完成后计算并返回。
**示例Python代码**(假设输入是一个字符串表示的数值列表):
```python
def calculate_stats(input_str):
# 分割字符串为数字列表
numbers = list(map(int, input_str.split()))
max_value = min_value = numbers[0]
sum_values = 0
sorted_list = sorted(numbers)
for num in numbers:
max_value = max(max_value, num)
min_value = min(min_value, num)
sum_values += num
average = sum_values / len(numbers)
if len(numbers) % 2 == 0:
median = (sorted_list[len(numbers) // 2] + sorted_list[len(numbers) // 2 - 1]) / 2
else:
median = sorted_list[len(numbers) // 2]
return max_value, min_value, average, median
input_data = input("请输入一组数值,用逗号分隔:")
max_val, min_val, avg, median = calculate_stats(input_data)
print(f"最大值:{max_val}, 最小值:{min_val}, 平均值:{avg}, 中位数:{median}")
阅读全文