我有2个功能。如果我从函数外部调用我的第一个函数,它就可以了。它给出了正确的价值。现在如果我在第二个函数中调用我的第一个函数,它会返回值为0。
我不明白我做错了什么。有人可以请我指出正确的方向吗?非常感谢!
def standaardprijs(afstandKM):
totaalPrijs = 0
if afstandKM < 50:
kmPrijs = 0.8
totaalPrijs += kmPrijs * afstandKM
return(totaalPrijs)
if afstandKM > 50:
totaalPrijs = totaalPrijs + 15
kmPrijs = 0.6
totaalPrijs += kmPrijs * afstandKM
return totaalPrijs
def ritprijs(leeftijd, weekendrit, afstandKM):
totaalPrijs = 0
totaaalPrijs = standaardprijs(afstandKMInp)
print(totaalPrijs)
# Leeftijd
if leeftijd >= 12 and leeftijd <= 65:
if weekendRit == 'j':
TP2 = totaalPrijs / 0.35
return TP2
else:
TP2 = totaalPrijs / 0.3
return TP2
else:
if weekendRit == 'j':
TP2 = totaalPrijs / 0.4
return TP2
else:
#geen korting
TP2 = totaalPrijs
return TP2
afstandKMInp = eval(input('Hoeveel KM gaat u reizen?'))
weekendRit = input('Weekendrit? j/n')
leeftijd = int(input('Leeftijd: '))
ritprijs2 = ritprijs(leeftijd, weekendRit, afstandKMInp)
print(ritprijs2)
答案 0 :(得分:1)
ritprijs(leeftijd, weekendRit, afstandKMInp)
此行没有副作用。它返回一个值,但你从不将它分配给任何东西。
您应该将其返回值分配给变量:
some_value = ritprijs(leeftijd, weekendRit, afstandKMInp)
print(some_value)
答案 1 :(得分:0)
问题是你有一个错字totaaalPrijs
不是totaalPrijs
所以你需要做的就是改为:
totaalPrijs = standaardprijs(afstandKMInp)
此外,您不应该使用 eval ,将输入转换为int:
afstandKMInp = int(input('Hoeveel KM gaat u reizen?'))
您还可以使用链式比较简化if leeftijd >= 12 and leeftijd <= 65
:
if 12 <= leeftijd <= 65:
并且您不需要在python中声明变量,因此您可以删除totaalPrijs = 0