[英]NameError: name 'value' is not defined
(背景第一:我是編程新手,目前在我大學的第一個“編程入門課程”中。這是我們處理函數的第二個任務。到目前為止,函數對我來說一直很痛苦,因為它們沒有“真的沒有任何意義。例如:你可以使用miles_gas(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
但我確實定義了“價值”......那為什么它給我一個錯誤?
Python 是詞法范圍的。 函數中定義的變量在函數外部不可見。 您需要從函數返回值並將它們分配給要使用這些值的范圍內的變量。 在您的情況下, value
是show_value
本地value
。
當你定義一個函數時,它需要接受參數。你在函數的括號中傳遞這些參數,當你定義你的函數時,你為函數命名這些參數。 我馬上給你看一個例子。
基本上發生的事情是你在調用函數時傳遞了一個參數,但在你的定義中你沒有參數,所以它不知道如何處理它。
改變這一行:
def show_value():
到這一行:
def show_value(price):
和show_value
到show_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)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.