在功能之间使用用户输入时遇到麻烦

306

我正在尝试学习Python,而我真的很难将我的代码纳入独立的函数中。这是一个例子:

def get_inputs():
    sales_amount = float(input("Enter total sales amount: "))

def calculate_discount(sales_amount):
    discount_amount = sales_amount * 2 
    return discount_amount

def output():
    print ( discount_amount )

def main():
    get_inputs()
    calculate_discount(sales_amount)
    output()

main()

运行此返回

File "/Users/Desktop/assA3.py", line 17, in <module>
main()

File "/Users/Desktop/assA3.py", line 14, in main
calculate_discount(sales_amount)

NameError: name 'sales_amount' is not defined

我认为该变量sales_amount是在以后引用之前由用户输入定义的。我不知道我想念什么。

对于这个问题的根本性,我深表歉意,但我显然对一些基本问题误解了,我真的很努力。任何帮助将不胜感激。谢谢。

保罗·鲁尼

您正在尝试在其他函数中使用函数作用域变量。函数外部什么get_inputs都看不到variable sales_amount,它是该函数局部的变量。您将遇到与相同的问题discount_amount,范围仅限于calculate_discount

而是返回值并将它们传递给其他函数。

def get_inputs():
    return float(input("Enter total sales amount: "))

def calculate_discount(sales_amount):
    discount_amount = sales_amount * 2 
    return discount_amount

def output(discount_amount):
    print ( discount_amount )

def main():
    inputs = get_inputs()
    discounts = calculate_discount(inputs)
    output(discounts)

main()

肮脏的选择是使它们成为全局变量

def get_inputs():
    global sales_amount
    sales_amount = float(input("Enter total sales amount: "))

def calculate_discount(sales_amount):
    global discount_amount
    discount_amount = sales_amount * 2 
    return discount_amount

def output():
    print ( discount_amount )

def main():
    get_inputs()
    calculate_discount(sales_amount)
    output()

main()

全局变量更慢,使代码更难维护,并且由于种种原因而变得不好。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章