这里的新手总数……下面的代码中的return语句未传递该函数计算的值。有人有什么想法吗?
def pagos(B,P,r,c):
UB = (B-P)*(1+(r/12))
if (c==12):
print(UB) #This is to establish if UB is actually reaching return statement#
return UB
c +=1
pagos(UB,P,r,c)
P=200
B=10000
r=0.2
c=0
R = pagos(B,P,r,c)
print("Answer :"+str(R))```
9472.628606761953
Answer :None
答案 0 :(得分:2)
您忘记在递归调用中使用return
:
def pagos(B,P,r,c):
UB = (B-P)*(1+(r/12))
if (c==12):
print(UB)
return UB
c +=1
return pagos(UB,P,r,c)
答案 1 :(得分:0)
您的问题涉及一个更复杂的想法。某些语言(例如Ruby)具有内置的返回值,在这些返回值中,最后的计算结果会从函数中自动返回-无论您是否告诉它。不管是好是坏(我会说是好的),Python都不那么友好。
如果Python到达函数末尾而没有遇到返回,则它将自动返回None
。您可以将基于C语言的None
想象为null
。正如其他人所评论的那样,您需要在递归调用上显式返回。因此,请从以下位置更改pagos
函数中的最后一行:
pagos(UB,P,r,c)
收件人:
return pagos(UB,P,r,c)
答案 2 :(得分:-1)
您应class Thing(models.Model):
alpha = models.ForeignKey('auth.User', on_delete=models.CASCADE,
related_name='alpha_thing')
beta = models.ForeignKey('auth.User', on_delete=models.CASCADE,
related_name='beta_thing')
assigned_at = models.DateTimeField(
_('assigned at'),
null=True,
help_text=_('Assigned at this date'))
进行递归过程。