NameError:未定义名称“value”

时间:2014-04-05 02:35:52

标签: python-3.x nameerror

(背景第一:我是编程的新手,目前是我在我大学的第一个“编程课程入门”。这是我们处理函数的第二个任务。到目前为止,函数一直是痛苦的屁股对我来说,因为他们没有任何意义。例如:你可以使用miles_gas(气体),但不要在其他任何地方使用“miles_gas”,但程序仍然运行??,无论如何)

好的,我在网上看了很多,无法找到答案。一切都在使用“异常”和“尝试”以及所有高级内容。我很新,所以我不知道有什么例外,或尝试,我也不在乎使用它们,因为我的老师还没有分配这样的东西。

我的项目是制作一个程序,在您输入房产价格时为您提供评估价值和物业税。这是我提出的代码(遵循我班级和书中的视频)

ASSESSMENT_VALUE = .60
TAX = 0.64

def main():
    price = float(input('Enter the property value: '))
    show_value(value)
    show_tax(tax)

def show_value():
    value = price * ASSESSMENT_VALUE
    print('Your properties assessment value is $', \
        format(value, ',.2f'), \
        sep='')

def show_tax(value,TAX):
    tax = value * TAX
    print('Your property tax will be $', \
        format(tax, ',.2f'), \
        sep='')    

main()

运行它后,我得到它问“等等进入价格:”所以我输入价格然后我得到一个巨大的红色错误说

Traceback (most recent call last):
      File "C:/Users/Gret/Desktop/chapter3/exercise6.py", line 41, in <module>
      main()
File "C:/Users/Gret/Desktop/chapter3/exercise6.py", line 24, in main
show_value(value)
NameError: name 'value' is not defined

但我DID定义'价值'......那为什么它会给我一个错误?

2 个答案:

答案 0 :(得分:1)

Python是词法范围的。函数中定义的变量在函数外部不可见。您需要从函数返回值并将它们分配给要使用值的范围中的变量。在您的情况下,valueshow_value的本地。

答案 1 :(得分:0)

定义函数时,需要参数。在函数的括号中传递这些参数,定义函数时,为函数命名参数。我会暂时向你展示一个例子。

基本上发生的事情是你在调用它时传递了一个参数函数,但在你的定义中你没有参数,所以它不知道如何处理它。

更改此行:

def show_value():

到这一行:

def show_value(price):

show_valueshow_value(price)

例如:

在这种类型的错误中:

def addition(a,b):
    c = a + b
    return c

addition() # you're calling the function, 
           # but not telling it the values of a and b

出现错误:

def addition():
    c = a + b
    return c

addition(1,2) # you're giving it values, but it 
              # has no idea to give those to a and b

关于函数的事情,就是那些变量只存在于函数中,而且参数的名称也无关紧要,只有订单。我理解这令人沮丧,但如果你以更开放的心态进行编程,我保证你会很感激。如果你想保留这些值,你只需要在最后返回它们。您可以通过编写return c, a, b并编写此sum, number1, number2 = addition(1,2)

之类的调用来返回多个变量

另一个问题是我可以像这样调用我的加法函数:

b = 1
a = 2
addition(b,a)

现在在函数中,a = 1和b = 2,因为它不是关于变量名,而是关于我将它们传递给函数的顺序。

您也不需要将TAX传递给show_tax,因为TAX已经是一个全局变量。它是在函数外部定义的,因此可以在任何地方使用。此外,您不希望将税收传递给show_tax,您希望将值传递给它。但是因为show_value没有返回值,所以你已经丢失了它。因此,将show value中的值返回给value = show_value(price)等变量。