我正在努力研究一个程序,以判断创建的磁盘是否触及预定义框的边缘。解析器会说的东西,如触摸边缘的圆形
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