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语句的主要内容,如果未能解决你的问题,请参考以下文章

python中的if循环怎么样?

python中循环语句

Python中的if,while,for

Python条件与循环

python学习笔记二:if语句及循环语句,断点,模块,pyc

如何使用python将and else语句添加到for循环中的if作为lambda的一部分