为什么if / else语句在我的函数中不起作用?

时间:2018-02-19 23:25:16

标签: python function if-statement main definition

我正在使用if / else语句为用户选择客户选项(Resident或Business),键入他们使用了多少千瓦,程序将计算电费。这必须在函数中使用(我们在课堂上学习的一章)。这是我的代码:

def main():
    customer = input("Enter R for residential or B for business")
    hours = int(input("Enter number of khw"))
    bill_calculator(hours, customer)


def bill_calculator(kwh,customer):
    if customer == 'R' :
        if kwh < 500:
            normal_amount = kwh * .12
        print ("Please pay this amount: ", normal_amount)
    elif kwh > 500:
        over_amount = kwh * .15
        print("Please pay this amount",over_amount)

    if customer == 'B':
        if kwh < 800:
            business_amount = kwh * .16
        print("Please pay this amount: ")
    elif kwh > 800:
        business_amount = kwh * .2
    print("Please pay this amount,", business_amount)

    main()

我的“常驻”计算有效并且显示但“业务”计算没有。我觉得这与我的缩进有关,但我不知道在哪里。

以下是我在底部的错误:

Enter R for residential or B for businessR
Enter number of khw77
Please pay this amount:  9.24
Traceback (most recent call last):
  File "C:/Users/vanbe/PycharmProjects/Lesson7/L07P2.py", line 24, in <module>
    main()
  File "C:/Users/vanbe/PycharmProjects/Lesson7/L07P2.py", line 4, in main
    bill_calculator(hours, customer)
  File "C:/Users/vanbe/PycharmProjects/Lesson7/L07P2.py", line 22, in bill_calculator
    print("Please pay this amount,", business_amount)
UnboundLocalError: local variable 'business_amount' referenced before assignment

谢谢你们

1 个答案:

答案 0 :(得分:2)

您的代码至少有三个问题。 首先,正如juanpa.arrivillaga在评论中提到的那样,您在每种情况下都打印business_amount,但只在客户=='B'时分配

其次,如果“R”客户的kwh等于500,而“B”客户则为800,则不会分配。

最后,它看起来像elif kwh&gt; 500意味着与kwh相同的水平<500。 500。

您可能希望代码看起来像这样:

    if customer == 'R' :
        if kwh < 500:
            normal_amount = kwh * .12
            print ("Please pay this amount: ", normal_amount)
        elif kwh >= 500:
            over_amount = kwh * .15
            print("Please pay this amount",over_amount)