为什么 if/else 语句在我的函数中不起作用?
Why do the if/else statements not work within my function?
我正在使用 if/else 语句供用户选择客户选项(居民或企业),输入他们使用的千瓦数,程序将计算电费。这必须在函数中使用(我们在 class 中学习的一章)。这是我的代码:
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()
我的 "resident" 计算有效并显示,但 "business" 计算无效。我觉得这与我的缩进有关,但我不知道在哪里。
下面是我的错误:
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 ,但仅在 customer == 'B'
时分配
其次,如果 'R' 客户的千瓦时等于 500,'B' 客户的千瓦时等于 800,则您没有分配。
最后,看起来 elif kwh > 500 与 kwh < 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)
我正在使用 if/else 语句供用户选择客户选项(居民或企业),输入他们使用的千瓦数,程序将计算电费。这必须在函数中使用(我们在 class 中学习的一章)。这是我的代码:
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()
我的 "resident" 计算有效并显示,但 "business" 计算无效。我觉得这与我的缩进有关,但我不知道在哪里。
下面是我的错误:
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 ,但仅在 customer == 'B'
时分配其次,如果 'R' 客户的千瓦时等于 500,'B' 客户的千瓦时等于 800,则您没有分配。
最后,看起来 elif kwh > 500 与 kwh < 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)