Python简单语言编写程序,用随机函数产生16个范围在1-100的整数列表,按照每行4个元素输出该列表,然后找出列表中是否存在两数对(a,b)和(c,d),使得a+b=c+d,其中a、b、c、d是数组中不同位置的元素,输出找到的全部结果。提示:使用字典保存数对的和。
时间: 2024-10-21 15:06:19 浏览: 19
python练习题 :用户任意输入10个整数到列表中,然后由大到小排列并输出。
Python是一个简洁易学的语言,非常适合编写这样的程序。首先,我们需要导入`random`模块生成随机整数,并使用`itertools`库来进行批量处理。以下是完整的代码示例:
```python
import random
from itertools import combinations
# 生成16个范围在1-100之间的随机整数
numbers = [random.randint(1, 100) for _ in range(16)]
# 将数字按每行4个分组并打印
for i in range(0, len(numbers), 4):
print(f"{numbers[i:i+4]}")
# 使用字典记录数对的和,寻找满足条件的数对
solutions = {}
for a, b in combinations(numbers, 2): # 所有两元素组合
c, d = numbers[numbers.index(a)+1], numbers[numbers.index(b)+1] # 检查下一个元素
if a + b == c + d and (a, b, c, d) not in solutions.values():
solutions[(a, b)] = (c, d)
solutions[(c, d)] = (a, b)
# 输出满足条件的数对
if solutions:
print("\n存在满足条件的数对:")
for pair, sum_pair in solutions.items():
print(f"({pair[0]}, {pair[1]}) + ({sum_pair[0]}, {sum_pair[1]}) = ({pair[0]+sum_pair[0]}, {pair[1]+sum_pair[1]})")
else:
print("未找到满足条件的数对.")
```
阅读全文