這這裏是我的代碼:如何使用其他功能的變量?
def Area():
area = pi * radius * radius
pi = 3.14
radius = diameter * 2
def cost():
diameter = eval(input("diamater: "))
print ("Area is", area)
cost()
它說沒有定義領域,但我有一個變量稱爲區域!
這這裏是我的代碼:如何使用其他功能的變量?
def Area():
area = pi * radius * radius
pi = 3.14
radius = diameter * 2
def cost():
diameter = eval(input("diamater: "))
print ("Area is", area)
cost()
它說沒有定義領域,但我有一個變量稱爲區域!
area
是一個函數中的局部變量,這意味着在該函數之外,您無法訪問它。你應該閱讀範圍和功能。這裏最好的解決方案是從函數返回值,並將參數傳遞給其他函數。
您似乎缺乏對如何評估代碼的理解。代碼按順序依次執行,作爲一系列語句。變量只能在定義後才能使用。在Area()
中,您正在嘗試使用它們之後定義變量。這沒有意義。
另請注意,eval()
是從字符串中獲取數字的不好方法(速度慢,不是爲此目的設計的,並且允許任意代碼執行),請改爲使用int()
。
還要注意的是PEP-8建議保留CapWords
上課,並使用lowercase_with_underscores
的函數名,所以Area()
也許應該是area()
。這將有助於保持代碼的一致性和可讀性。
你應該:
Area()
回area
;Area()
從cost()
,適當使用其結果。最後,Area()
中的語句順序的確看起來很奇怪。
,你是什麼意思?我必須有兩個功能 - 這是我的作業所必需的 –
變量被本地化爲方法的範圍。如果你想從方法使用的值,它return
:
def area(diameter=1):
pi = 3.14
radius = diameter * 2
area = pi * radius * radius
return area
# Calling the value
def cost():
diameter = eval(input("diamater: "))
print ("Area is", area(diameter))
另外值得一提的是,在原始代碼:
diameter
不被任何定義。你的意圖是把它傳遞給方法;我在這裏提供了這個提示。
呃,不應該是'diameter = radius * 2'嗎? (或者'radius = float(diameter)/ 2') – Marius
我們怎樣才能證明'eval(input(..))'是一件好事?第二個是 –