为什么如果/else语句在我的功能中不起作用



我正在使用if/else语句以选择客户选项(居民或业务(,输入他们使用的数量数量,并且该程序将计算电费账单。这必须用于函数(我们在课堂上学习的一章(。这是我的代码:

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

谢谢你们

您的代码至少有三个问题。首先,正如Juanpa.Arrivillaga在评论中提到的那样,您在每种情况下都在打印business_amount,但仅在客户=='b'

时分配

第二,如果kWh为500,则您不为" r"客户和800个客户分配。

最后,看起来Elif KWH> 500的意义与KWH&lt相同。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)

相关内容

  • 没有找到相关文章

最新更新