这段代码有什么问题?它给出了一个错误

时间:2014-02-22 16:35:07

标签: python

我试图根据家庭收入和子女数量给出退还金额

当我运行时,它说:

  

回溯(最近一次调用最后一次):第24行,在main()第5行,主要打印(“返回金额:”,金额(已退回))NameError:未定义全局名称“返回”>> > -

def main():
    income = int(input("Please enter the annual household income: "))
    children = int(input("Please enter the number of children for each applicant: "))

    print("Amount returned: ", amount(returned))


def amount (returned):
    if income >= 30000 and income < 40000 and children >= 3:
        amnt = (1000 * children)
        return amnt

    elif income >= 20000 and income < 30000 and children  >= 2:
        a = (1500 * children)
        return a

    elif income < 20000 :
        r = (2000 * children)
        return r

    else:
        return "error"

main()

2 个答案:

答案 0 :(得分:2)

执行此操作时:

amount(returned)

...您正在调用函数amount,并且赋予变量returned的值。在您的代码中,您尚未定义变量returned,这就是您收到错误的原因。

写下你要做的事情的正确方法是传入incomechildren - 它们成为函数的输入 - 然后打印该函数返回的内容:

print("Amount returned: ", amount(income, children))

这意味着您必须重新定义您的功能,以接受incomechildren作为输入:

def amount(income, children):
    ...

如果你真的需要一个名为returned的变量,你可以将它设置为函数的结果:

returned = amount(income, children)
print("Amount returned: ", returned)

答案 1 :(得分:0)

@ user3341166我虽然你正在学习编码,但你有概念错误,照顾好你的问题,否则你会对这个网站感到失望,请记住问聪明的问题,我的意思是,阅读谷歌,每当你得到一个错误,粘贴错误,但首先,读取错误,该描述的一些时间是解决方案

你的错误是关于函数的定义,当你定义一个函数,你也定义输入变量,或者没有输入,在你的情况下,你需要两个输入来传递收入和子,否则,你的函数将没有任何关于工作的想法。

如果你检查你的函数,你正在使用两个变量“income and children”,但是这个var是在函数之外定义的,你需要一种方法将它们传递给函数,然后你需要创建函数参数。

我希望你能理解我的小介绍。祝你好运

def main():
    income = int(input("Please enter the annual household income: "))
    children = int(input("Please enter the number of children for each applicant: "))

    print("Amount returned: ", amount(income, children))


def amount (income, children):
    if income >= 30000 and income < 40000 and children >= 3:
        amnt = (1000 * children)
        return amnt

    elif income >= 20000 and income < 30000 and children  >= 2:
        a = (1500 * children)
        return a

    elif income < 20000 :
        r = (2000 * children)
        return r

    else:
        return "error"

if __name__ == '__main__':
    main()