如何传递更新后的m值给目标函数,使其重新计算z值?
看起来你卡在了函数参数传递的问题上——你的r(x,y)函数里把m硬编码成1了,不管你在n()里怎么更新m的值,调用r的时候它都会重新初始化m=1,自然没法用上你更新后的m。
解决思路很简单:把m改成r函数的参数,让它从外部接收m的值,而不是自己内部固定死。
修改后的代码实现
- 重构
r函数,添加m作为参数:
def r(x, y, m): z = x + y + m return m, z
现在r不再自己定义m,完全使用我们传入的数值来计算z。
- 更新
n()函数的逻辑,把修改后的m传递给r:
def n(): # 第一次调用r,初始m设为1 m, z = r(3, 4, 1) if z < 150: # 计算更新后的m值 updated_m = m + 1 # 把新的m传给r,这里x和y用你原来的5、6完全没问题 m1, z1 = r(5, 6, updated_m) print(m, m1, z1)
现在运行n()的话,第二次计算的z1就是5+6+2=13,而不是原来固定m=1时的12,完全符合你的需求。
扩展:循环更新直到z满足条件
如果你的需求是循环递增m,直到z不小于150(而不是只更新一次),可以用while循环实现:
def n(): m = 1 # 先计算初始z current_m, z = r(3, 4, m) while z < 150: m += 1 current_m, z = r(3, 4, m) print(f"满足条件时的m={current_m}, z={z}")
这段代码会自动递增m,直到z≥150为止。
内容的提问来源于stack exchange,提问作者julespuppy02
相关产品推荐
相关产品推荐

