我正在尝试使用while循环更改定义的参数。
首先,我创建了一个计算变量的函数,这个函数需要一个输入,当while循环保持True时它会改变。我尝试使用“+ =”命令更改输入,但python不会将其识别为公式中输入的更改。有什么建议?
def test(x,y,z):
count = 0
while count != 12:
x-= z
x= x* ((1+y))
count += 1
return x
end= test(x,y,z)
def rerun():
test(x,y,z)
while end> 0:
z += 1
rerun()
请注意我尝试重新输入功能测试的变量是“z”。
答案 0 :(得分:0)
您需要传入每次迭代要更改的参数:
def test(x,y,z):
for i in range(12):
x -= z
x *= 1 + y
return x
def main():
gx = 1
gy = 5
gz = 10
# Define a function rerun which binds gx to x, gy to y and leaves one parameter open
def rerun(z):
test(gx,gy,z)
# run rerun with that one left over parameter
for gz in range(100):
print rerun(gz)
main()
你会注意到我也改变了你的一些代码。 end
从未被定义过
并且while i < 0: i += 1
在Python中不是一个好的风格。
答案 1 :(得分:0)
除了几件事之外,你的程序是有效的。
您需要将end
设置为rerun()
的结果,否则如果输入while end > 0
循环,它将永远运行,因为end
永远不会更改。
您还需要从rerun
返回一些内容。
此外,如果第一个end
为否定,则不会输入最终的while end > 0
循环。
您没有指定x
,y
和z
的初始值。
我选择了10,2和3。
这是输出:
test 2922930 2 3 12
test 2125770 2 4 12
end loop 2125770 10 2 4
test 1328610 2 5 12
end loop 1328610 10 2 5
test 531450 2 6 12
end loop 531450 10 2 6
test -265710 2 7 12
end loop -265710 10 2 7
修订后的计划
def test(x,y,z):
count = 0
while count != 12:
x-= z
x= x* ((1+y))
count += 1
print "test", x, y, z, count
return x
x = 10
y = 2
z = 3
end= test(x,y,z)
def rerun():
return test(x,y,z) # return the result
while end> 0: # loop is never entered if initial `end` is negative
z += 1
end = rerun() # update `end`
print "end loop", end, x, y, z