我正在尝试在函数中使用字典值,并且我不断获得NameError
。不知道我做错了什么。
import re
def main():
sales_amount = get_amount()
customer_ID = get_ID()
discounts = read_discounts()
calculate_discount(sales_amount, discounts)
print(discount_percentage)
#print (discounts)
def get_amount():
return float(input("Enter total sales amount: "))
def get_ID():
return float(input("Enter customer ID: "))
#function to read discount values, strip non-alphanumeric characters and add values to dictionary
def read_discounts():
myFile = open('discount.txt', 'r')
discountValues = {}
#read and split first line
firstLine = myFile.readline()
firstLine = re.sub(r'\$','',firstLine)
firstLine = re.sub(r'\%','',firstLine)
firstLine = firstLine.split()
#add values to dictionary
discountValues['UpperLimit1'] = {firstLine[2]}
discountValues['UpperLimit1'] = [ float(x) for x in discountValues['UpperLimit1'] ]
discountValues['PercentDiscount1'] = {firstLine[4]}
discountValues['PercentDiscount1'] = [ float(x) for x in discountValues['PercentDiscount1'] ]
return (discountValues)
def calculate_discount(sales_amount,discounts):
if sales_amount < discountValues[UpperLimit1]:
discount_percentage = discountValues[PercentDiscount1]
main()
这是追溯:
Traceback (most recent call last):
File "C:\Users\Sam\Desktop\test.py", line 92, in <module>
main()
File "C:\Users\Sam\Desktop\test.py", line 7, in main
calculate_discount(sales_amount, discountValues)
NameError: global name 'discountValues' is not defined
我已经尝试将字典名称作为参数传递给函数但产生相同的结果。另外我应该注意,我知道将文本文件读入字典的方法可能不是最佳的,但我现在想关注calculate_discount
函数。
完全披露:这是作业。
答案 0 :(得分:4)
discounts = read_discounts()
calculate_discount(sales_amount, discountValues)
您保存了discounts
。使用它而不是discountValues
。
再来一次:
def calculate_discount(sales_amount,discounts):
if sales_amount < discountValues[UpperLimit1]:
discount_percentage = discountValues[PercentDiscount1]
始终使用名称。
您的read_discounts()
方法似乎也有不正确的缩进。
答案 1 :(得分:-1)
在您的主要功能中,您正在使用变量“discountValues”:
calculate_discount(sales_amount, discountValues)
尚未声明,如果您打算使用gloabl,请在main()函数中使用此语句。
def main():
global discountValues
...