我正在努力用一个程序来判断创建的磁盘是否接触到预定义框的边缘。解析器一直在说
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
概述
这段代码中有很多基本问题。我要退一步,试着解决你的几个流程问题。你知道吗
最重要的是,我强烈建议您采用增量编程:编写几行代码,只需一两步逻辑。然后测试,直到你确定它做你想要的。只有这样你才能写更多的代码。你知道吗
这样做的好处是问题通常很容易调试:只有新的2-5行是可疑的。把这和你目前的情况对比一下:你有几个错误;纠正其中任何一个都不会给你一个明显更好的结果,所以你很难知道你做错了什么,直到你一下子把所有的错误都搞定。你知道吗
什么是函数?
把它想象成某种安全装置,也许就像通往餐厅厨房的通道。服务员把一张订单(纸条)从窗口递出去。烹饪结束后,盘子里的食物又回来了。所有的通信都通过那个窗口。当我们要煎蛋卷的时候,据我们所知,厨师是在烤盘上切牛肉片。。。或者用核弹炸一些冷冻的东西。看不见,也说不清;那是一个单独的房间,墙壁不透明。你知道吗
这对我意味着什么?
程序中有三个“房间”:主程序、运行代码和触摸面。他们谁也看不见其他人的内心。运行代码中的变量left与触摸侧中的变量left没有关系。这些都是完全独立的实体,没有比金正日和卡戴珊更紧密的联系。你知道吗
特别是,第一行接触面是一个终极嗯?Python编译器的时刻。没有定义的东西叫做diskscription。在更远的地方,您需要花费大量的工作来获取left和right的值,但是您不会将它们滑回窗口。运行代码不知道您在那里做了什么有用的事情。你知道吗
要解决的问题
此时,您知道可以在函数之间可靠地传递值。现在您可以添加实际的代码。你知道吗
还有什么?
熟悉布尔表达式的概念。了解您的原始代码
直接减少到
现在应该够了。长寿,计划。你知道吗
相关问题 更多 >
编程相关推荐