函数内部调用函数返回0

时间:2016-09-08 10:12:49

标签: python-3.x

我有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)

2 个答案:

答案 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