赋值前引用的局部变量.你能在函数中分配全局变量吗?



我收到错误:分配前引用了局部变量"import_tax"。我在 5 分钟前让它工作,但不知道我做了什么来破坏它或如何修复它。尝试根据是否满足某些条件来获取代码来计算税款,即。豁免或进口等

我想我对全局变量的分配感到困惑。比如我是否应该在函数或类似的东西之前分配 import_tax 和 sales_tax = 0?但这返回所有税 = 0,即使它应该添加到税中。这是我的代码:

exempt_items = ['book', 'food', 'chocolate', 'medicine' ]
item_dict = {}
def main():
add_item = input("Add item? Y/N: ")
while add_item.capitalize() == 'Y':
quantity = input("How many? ")
item_to_add = input("Item: ")
original_price = float(input("Price: "))
imported = False
exempt = False
if 'import' in item_to_add:
imported = True
for i in range(0, len(item_to_add.split())):        # search string see if exempt or not
item_to_add = item_to_add.rstrip('s')           # remove plurals
if item_to_add.split()[i] in exempt_items:
exempt = True
if imported == True:
import_tax = original_price*0.05                # add 5% on imported goods   
print("Imported", imported)       
if exempt == False:
sales_tax = original_price*0.1                  # add 10% if not exempt  add to total sales tax 
print("Exempt", exempt)
print("IT:",import_tax, "ST", sales_tax)
total_tax = sales_tax + import_tax
final_price = round((original_price + total_tax) * float(quantity), 2) 
item_to_add = quantity + ' ' + item_to_add
item = {item_to_add: final_price}
item_dict.update(item)
print("Final Price", final_price)
add_item = input("Add item? Y/N ")
print('-------------------')
for key, val in item_dict.items():
print (key, ':', val)
print('-------------------')
print("Sales Taxes:",round(total_tax, 2))
print("Total:",round(sum(item_dict.values()) , 2))
print('-------------------')

if __name__ == '__main__':
main()

所以输入如"进口巧克力"在 10,应该返回:1 进口巧克力:10.50 销售税:0.50 总计:
10.50

您应该在设置它们的 if 语句之前将import_taxsales_tax声明为 0。这是因为如果importedFalse则不会为其分配值,并且会收到引用错误。

最新更新