如果是else if python中的条件循环

时间:2015-01-16 02:21:36

标签: python python-2.7 python-3.x ipython

我在molecular_group1中给出了一组分子,我希望通过我的功能将分子移动到其他新的空分子_group2。它只向空分子组添加一个分子。每当我上传任何含有一个或多个分子的分子组时,它总是打印出来并排序出现在新组中的前五个分子。没有添加分子。此外,如果由于耐受性标准而未添加分子,那么我将如何使功能再次运行直至成功添加分子。

def initial_configurations(newemptygroup,backgroundmols,tolerance,boxspace):
    p = PointRef(backgroundmols.molecule().evaluate().centerOfGeometry())
    c = CloseMols(p,newemptygroup,5)
    g_random = c.closeMolecules()
    if len(g_random) == 0:
        newemptygroup.add(backgroundmols)
        print("first molecules to be added")
    else:
        g = sorted(g_random.items(), key=operator.itemgetter(1)) # sort the dict by value which give tuple
        print("sorted first five  molecules present in newgroup =%s" %g)
        t = [x[0] for x in g]
        selected = newemptygroup[t[0]].molecule().evaluate().centerOfGeometry()
        for i in range(1,len(t)):
            closemols = newemptygroup[t[i]].molecule().evaluate().centerOfGeometry()
            if (selected-closemols).length() > tolerance:
                newemptygroup.add(backgroundmols)
            else:
                print("not added")           
    return newemptygroup

1 个答案:

答案 0 :(得分:0)

你可以在newemptygroup.add(backgroundmols)之后插入一个break语句

...
if (selected-closemols).length() > tolerance:
  newemptygroup.add(backgroundmols)
  break
else:
  print("not added")   
...

这假设您将在for循环中的某个时间找到正确的backgroundmols。