Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 赋值前引用的局部变量。你能在函数中分配全局变量吗?_Python_Syntax Error_Local Variables - Fatal编程技术网

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

Python 赋值前引用的局部变量。你能在函数中分配全局变量吗?,python,syntax-error,local-variables,Python,Syntax Error,Local Variables,我得到一个错误:赋值前引用了局部变量“import\u tax”。我在5分钟前就让它工作了,但是我不知道我做了什么来打破它或者如何修复它。试图获取计算税收的代码,这取决于是否满足某些标准,如免税或进口等 我想我对全局变量的赋值感到困惑了。比如我应该在函数或类似的东西之前分配import\u tax和sales\u tax=0?但这将返回所有税=0,即使它应该添加到税中。这是我的密码: exempt_items = ['book', 'food', 'chocolate', 'medicine'

我得到一个错误:赋值前引用了局部变量“import\u tax”。我在5分钟前就让它工作了,但是我不知道我做了什么来打破它或者如何修复它。试图获取计算税收的代码,这取决于是否满足某些标准,如免税或进口等

我想我对全局变量的赋值感到困惑了。比如我应该在函数或类似的东西之前分配import\u tax和sales\u 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语句之前将
进口税
销售税
声明为0。这是因为如果导入的
imported
False
,则您不会为其赋值,并且会得到一个参考错误。

您应该在设置它们的if语句之前将
导入税
销售税
声明为0。这是因为如果导入的
imported
False
,则不会为其赋值,并且会出现引用错误。

如果导入的
不是
True
,会发生什么情况?你确定你的输入是
真的
?您是否尝试过删除您的程序?问题中的最后一个注释返回all tax=0,即使它应该添加到tax中,也意味着您的程序中的某些内容没有按照您的预期工作。这也解释了如果不将它们声明为0会出现的错误。我的想法是,在字符串中找到“import”之前,所有导入的项目都将为false,然后使import=True如果
imported
不是
True
,会发生什么?你确定你的输入是
真的
?您是否尝试过删除您的程序?问题中的最后一个注释返回all tax=0,即使它应该添加到tax中,也意味着您的程序中的某些内容没有按照您的预期工作。这也解释了如果不将它们声明为0,则会出现的错误。我的想法是,在字符串中找到“import”之前,所有导入的项都将为false,然后使import=true添加
else
语句以将
import\u tax
设置为默认值是另一个选项。添加
else
语句以将
import\u tax
设置为默认值是另一个选项。