Python 如何使用函数本身返回的值重复函数?
我有一个返回两个值的函数,我想对这些返回值重复相同的操作Python 如何使用函数本身返回的值重复函数?,python,function,repeat,Python,Function,Repeat,我有一个返回两个值的函数,我想对这些返回值重复相同的操作 fPoint = getFirstPoint (x, y, currCalcX, currCalcY) newCurrValX, newCurrValY = fPoint print(newCurrValX, newCurrValY) 上述函数返回如下值: 250.0 60.0 我想在currCalcX和currCalcY上应用这些值,并重复函数getFirstPoint(),直到返回None。使用循环: # dummy imple
fPoint = getFirstPoint (x, y, currCalcX, currCalcY)
newCurrValX, newCurrValY = fPoint
print(newCurrValX, newCurrValY)
上述函数返回如下值:
250.0 60.0
我想在currCalcX和currCalcY上应用这些值,并重复函数getFirstPoint()
,直到返回None
。使用循环:
# dummy implementation - returns None if a or b is 0, ignores x and y
def getFirstPoint(x,y,a,b):
if a==0 or b==0:
return None
return a-1,b-1
x, y, currCalcX, currCalcY = 0,0,4,4 # add sensible values here
while True:
fPoint = getFirstPoint (x, y, currCalcX, currCalcY)
if fPoint is None:
print("Done")
break
currCalcX, currCalcY = fPoint
print(currCalcX, currCalcY)
输出:
3 3
2 2
1 1
0 0
Done
这里不需要递归——它不需要在函数堆栈帧上堆叠。如果需要太多的递归(而且根本不需要),您可能会达到递归限制-有关递归限制的解释,请参阅。您需要递归,请参阅:好的,我会研究它。谢谢,让我试试。不起作用。我一次又一次地得到相同的值。函数似乎没有使用更新的值运行。@ShyamMohan修复了输入错误-您需要用结果替换
currCalcX,currCalcY
的值-不创建newCalcX,newCalcY
,该函数会给出错误UnboundLocalError:赋值前引用的局部变量“currCalcX”
@Shy完全运行的示例已编辑。代码中出现的错误可能是因为在函数中使用之前未设置'currCalcX'