Python中的循环和if语句
Posted
技术标签:
【中文标题】Python中的循环和if语句【英文标题】:looping and if statement within Python 【发布时间】:2013-07-10 01:35:29 【问题描述】:我有一个问题,如果外部条件(自动评估)为假,我想(通过 0.01 的增量)从 0 到 1(该位很容易),如果条件为假,则停止计数器真的。
条件是两个对象之间是否发生了碰撞。我知道这部分工作正常,因为我已经手动并在循环中对其进行了测试。但是如果发生碰撞,停止计数器被证明是棘手的。我敢肯定,我错过了一些非常非常简单的事情。
def autoHandClose():
global collisionDeteched # this is set to false but on collision correctly changes to true
counter = 0
for x in range(100):
if collisionDeteched == False:
counter = counter + 0.01
h.setGesture(hand.GESTURE_FIST, closeThumb=True, weight = counter)
else:
break
权重参数是从 0 到 1(因此我想从 0 到 1 来关闭手)我可以关闭手但如果检测到碰撞则无法让它停止。此方法分配给键盘按钮按下。
我猜逻辑是错误的,对吧?
【问题讨论】:
【参考方案1】:是否在此循环的并行线程上运行“collisionDetected”检查?如果不是,您将永远不会退出循环,因为 collisionDetected 的值将永远不会更新。是这样吗?
另外附注:
您可能希望更改您的 for 循环,使其看起来更像这样,以使您的代码更清晰:
for counter in range(0,1,0.01):
...
这将减少在循环中设置计数器的需要。
【讨论】:
感谢您的回复,使用滑块更改计数器的值时,“collisionDetected”的检查没有出现任何问题。我会仔细检查。我不知道我的逻辑是否也嵌套不正确。 在 for 循环期间 collisonDetected 的值是否会更新? 是的。只有当我添加 if 语句来中断 for 循环时它才不起作用。 尝试删除中断语句,而是在循环中的每个步骤输出碰撞检测。然后您可以查看它是否在循环终止之前或之后发生变化。以上是关于Python中的循环和if语句的主要内容,如果未能解决你的问题,请参考以下文章