Python基础编程:用FOR循环实现数对和判断与最大差值计算
Python基础:数对和的相等性判断与最大连续差值计算
原代码问题分析
- 循环范围错误:
count_numbers = int(input()) * 2已经得到总数字个数2n,但循环时写成range(0, count_numbers * 2, 2),导致循环次数翻倍,会尝试读取远超需求的输入。 - 数对和记录逻辑错误:每次循环读取4个数字并计算两个数对的和,但直接覆盖了
sum_pair1和sum_pair2,无法保存所有n个数对的和,最终仅比较了最后两个数对的结果,完全不符合需求。 - 未实现连续差值计算:需求要求不相等时计算连续数对和的最大差值,原代码完全没有处理这部分逻辑。
修正后的代码
# 获取数对数量n n = int(input()) # 存储所有数对的和 pair_sums = [] # 循环读取2n个数字,计算每个数对的和 for _ in range(n): num1 = int(input()) num2 = int(input()) pair_sums.append(num1 + num2) # 判断所有数对和是否相等 all_equal = True first_sum = pair_sums[0] for s in pair_sums[1:]: if s != first_sum: all_equal = False break if all_equal: print(f"Yes, value={first_sum}") else: # 计算连续数对和的差值的绝对值,找最大值 max_diff = 0 for i in range(len(pair_sums) - 1): current_diff = abs(pair_sums[i] - pair_sums[i+1]) if current_diff > max_diff: max_diff = current_diff print(f"No, maxdiff={max_diff}")
代码解释
- 输入处理:先读取n,然后循环n次,每次读取两个数字组成数对,计算和并存入列表
pair_sums,确保收集到所有n个数对的和。 - 相等性判断:以第一个数对的和为基准,遍历剩余所有和,只要有一个不同就标记为不相等。
- 最大连续差值计算:遍历数对和列表,依次计算相邻两个和的差值绝对值,记录最大值。
内容的提问来源于stack exchange,提问作者v1dem
相关产品推荐
相关产品推荐

