[英]Issue with loop “for if else” python
我在以下代码中有问题:
for n in range(0,i)+range(i+1,len(XY_pos)): # excludes i==n
if distance(XY_temp,i,n)<sigma:
XY_temp[i]=XY_pos[i] # back to before the move
break
else:
XY_pos[i]=XY_temp[i] # move accepted
accepted_moves+=1
NUMBER.append(number(r))
# overlap condition
这部分代码是对我位于XY_temp [i]中的粒子进行或不进行移动的编码。 我用更简单的方法尝试了这种结构,它似乎起作用了,但是在这里不行。 我没有任何错误消息,但是从结果中我可以看到,即使在应有的情况下,其他部分也永远不会执行。 我可以想到一个解释,这将受到热烈欢迎
我真的是Python的新手,所以我希望这不是一个愚蠢的问题,但是经过数小时的网上寻找以及独自寻找解决方案后,我在这里提出了问题。
我尝试使用与“ if”相同的标识级别的中断,它似乎没有任何改变。
谢谢
您需要缩进整个else
子句,并将正文深一层。 否则,您将在“ for”循环中使用“ for-else ”构造,而不是“ if-else”构造。 “ for-else”有点像Python的怪异之处,但它确实存在,您在这里不想要它。
Python对缩进非常严格:缩进是代码的结构。
如所写,else与if不相关,而与for(相同级别)相关。 因此,只有在没有我要迭代for循环的情况下,才应传递else分支。
在python中没有for-if-else
循环,只有for-else
循环。 if
里面是单独的语句。
python中的for-else
循环有点棘手:
for i in something:
<inside code>
else:
<else code>
只有在整个循环完成而没有break
或异常的情况下,才执行<else code>
。 这意味着,每当<inside code>
发出break
或引发异常时,整个循环就会结束,并且<else code>
将不会执行。
重要的是要了解else
分支与for
循环联系在一起,而不是与if
循环联系在一起。
有关更多信息,请参见: https : //wiki.python.org/moin/ForLoop
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.