函数未输出正确最大值及对应i、j值问题求助
问题分析与解决
你的代码存在三个核心问题,导致无法得到正确结果:
- 提前返回:在第一次满足
z > maxi时就直接return i,j,循环只执行了一次(i=1,j=1)就终止,没有遍历所有可能的i和j组合。 - 手动修改循环变量:
for循环会自动迭代range中的值,手动执行i +=1和j +=1会跳过部分循环元素,完全没必要。 - 执行顺序错误:先打印了初始值为0的
maxi,再调用函数计算最大值,导致打印的maxi不是最终结果。
修正后的代码
maxi = 0 best_i = 0 best_j = 0 def find_max(): global maxi, best_i, best_j for i in range(1, 5): for j in range(1, 5): z = i + j if z > maxi: maxi = z best_i = i best_j = j return best_i, best_j # 先调用函数计算最大值,再打印结果 x, y = find_max() print("Maximum: {}".format(maxi)) print("i at max:", x) print("j at max:", y)
代码说明
- 移除了循环中的
return语句,确保遍历所有i(1-4)和j(1-4)的组合,每次找到更大的z时更新最大值和对应的i、j。 - 删除了多余的
i +=1和j +=1,让for循环正常迭代。 - 调整执行顺序,先调用函数完成所有计算,再打印最终的最大值和对应的i、j。
正确输出
Maximum: 8 i at max: 4 j at max: 4
内容的提问来源于stack exchange,提问作者Stone Gold
相关产品推荐
相关产品推荐

