从键盘输入一个包含正负数的整数序列,编程实现把序列分成大于等于0和小于0的两个序列,并按从小到大排序,输出排序结果,序列个数,序列的和。用python实现
时间: 2025-03-16 10:18:00 浏览: 40
好的!以下是用Python实现的一个示例程序,它能够完成将输入的整数序列分为大于等于0和小于0的两部分,并对每部分分别排序、计算长度以及求和。
### Python 实现
```python
# 输入一个包含正负数的整数序列
input_sequence = input("请输入一系列整数(用空格分隔):")
numbers = list(map(int, input_sequence.split()))
# 分成两个列表
non_negative_numbers = [num for num in numbers if num >= 0]
negative_numbers = [num for num in numbers if num < 0]
# 对每个列表进行从小到大的排序
non_negative_numbers.sort()
negative_numbers.sort()
# 计算各统计值
def calculate_stats(numbers):
return {
"sorted_list": numbers,
"count": len(numbers),
"sum": sum(numbers)
}
non_negative_stats = calculate_stats(non_negative_numbers)
negative_stats = calculate_stats(negative_numbers)
# 输出结果
print("\n非负数部分:")
print(f"排序后的列表: {non_negative_stats['sorted_list']}")
print(f"元素个数: {non_negative_stats['count']}")
print(f"总和: {non_negative_stats['sum']}")
print("\n负数部分:")
print(f"排序后的列表: {negative_stats['sorted_list']}")
print(f"元素个数: {negative_stats['count']}")
print(f"总和: {negative_stats['sum']}")
```
---
**运行示例**
假设用户输入了以下数据:
```
请输入一系列整数(用空格分隔):5 -3 8 -6 0 2 -1
```
程序会输出:
```
非负数部分:
排序后的列表: [0, 2, 5, 8]
元素个数: 4
总和: 15
负数部分:
排序后的列表: [-6, -3, -1]
元素个数: 3
总和: -10
```
---
#### 程序解释
1. **读取并解析输入**: 使用 `input()` 获取一行字符串形式的数据,通过 `.split()` 将其分割为单独的数字,并用 `map(int, ...)` 转换为整型列表。
2. **划分正负数**: 利用列表推导式 `[num for num in numbers if num >= 0]` 和 `[num for num in numbers if num < 0]` 完成分割操作。
3. **排序**: 使用内置函数 `sort()` 对列表按照升序排列。
4. **统计数据**: 创建辅助函数 `calculate_stats` 来返回排序后的列表、列表长度及总和。
5. **打印结果**: 格式化输出所有需要的信息。
---
阅读全文