我正在努力研究一個程序,以判斷創建的磁盤是否觸及預定義框的邊緣。解析器會說的東西,如觸摸邊緣的圓形
NameError: global name 'disksdescription' is not defined
Warning: variable 'left' is assigned to, but never used
到目前爲止的代碼是:
import numpy.random as nr
def touch_sides(disk, radius, x, y):
for disk in disksdescription:
for left in disk.values()[2]:
if x <= radius:
left = True
else:
left = False
for right in disk.values()[3]:
if x >= 1-radius:
right = True
else:
right = False
def run_code():
radius = 0.1
coordinates = nr.uniform(size=(1,2))
print coordinates
disksdescription = []
for row in range(0, coordinates):
x = coordinates[row, 0]
y = coordinates[row, 1]
disksdescription.append({'x': x, 'y': y, 'left': left, 'right': right})
touch_sides(coordinates, radius, x, y)
print disksdescription
你爲什麼覺得'disksdescription' *可以在'touch_sides'中訪問? – jonrsharpe
Python是詞法範圍的,這意味着變量的存在取決於它被寫入的位置,而不是被稱爲(動態範圍)的位置。您應該允許'disksdescription'作爲參數傳入'touch_sides'。你也應該避免在循環變量'left'和'right'上進行賦值,因爲這些值將被循環的下一次迭代覆蓋,這通常不是非常有用。 – ebolyen
歡迎來到StackOverflow。請閱讀並遵守幫助文檔中的發佈準則。 [最小,完整,可驗證的示例](http://stackoverflow.com/help/mcve)適用於此處。最值得注意的是,應該有一個驅動程序來測試你的代碼和錯誤信息的全文。 – Prune