Python 2.7在if,elif,elif语句上运行组合

时间:2017-03-24 16:25:46

标签: python python-2.7 if-statement

我正在尝试创建一个显示碳原子连通性的代码(表示为3D坐标)

我的代码输入一个excel文件,其组织为:

carbon x_coord y_coord z_coord 1 1.08 0.49 0.523 2 0.18 1.3 0.5 3 0.83 0.72 0.44

使用

subset = cmd[['carbon','x_coord', 'y_coord','z_coord']]
coordinate_values = [tuple(x) for x in subset.values]
atoms = coordinate_values
atomPairs = itertools.combinations(atoms, 2)

我计算了每个组合对之间的距离,并按如下方式排序:

if d >= 1.4 and d < 1.6:
   print("The bond is a single bond")
elif d >= 1.2 and d < 1.4:
   print("The bond is a double bond")
elif d >= 1 and d < 1.2:
   print("The bond is a triple bond")
else:
    print("No bond exists")

获取输出(对于每对,只显示下面一个)

Computing distance between carbon_1 and carbon_1
The bond is a single bond

我现在想要采取所有这些距离,但只允许每个碳_具有最多四个键(四个&#34;单个&#34;,或两个&#34;单个&#34;和一个& #34; double&#34;,或者一个&#34; single&#34;和一个&#34; triple&#34;),但不需要四个债券。

虽然我不知道如何解决这个问题,但我希望得到类似于此的输出:

carbon_1 is bonded to
single bond to carbon_2
single bond to carbon_3
single bond to carbon_4
carbon_1 is bonded to
single bond to carbon_2
triple bond to carbon_5
carbon_2 is bonded to
single bond to carbon_1
triple bond to carbon_6

因为我所拥有的距离数量,我预计每个碳都有多种债券组合_

我的想法是做另一个if / elif语句来实现这个输出,但我不确定如何为这个项目启动我的代码。任何帮助是极大的赞赏!

1 个答案:

答案 0 :(得分:0)

部分问题可能是1.4保证金。

是的,在芳香循环中,已知距离为1.4。如果由于四舍五入误差仅计算距离计算为1.399999999怎么办?你最终得到6个结合的碳,图中的编号为4a和8a:

enter image description here