编程:Aufbau原理

时间:2017-12-12 18:19:07

标签: python

我正在尝试根据原子序数

生成一个建立元素电子配置的函数
def Klechkowski(Z):
    L=[]
    while Z!=0:
          if Z-2<=0:
             if Z-1==0:
                L.append("1s^1")
             else:
                  L.append("1s^2")
          if Z-4<=0:
             if Z-3==0:
                 L.append("2s^1")
             else:
                 L.append("2s^2")
          if Z-10<=0:
             if Z-6==4:
                 L.append("2s^1")
             else:
                   L.append("2s^2")
             ...

    L2=(reversed(L))

结果应如下所示:17 - &gt; 1s ^ 2 2s ^ 2 2p ^ 6 3s ^ 2 3p ^ 5

我无法弄清楚转换结果的方式以及我应该为每一层重复哪个过程

1 个答案:

答案 0 :(得分:3)

无论输入如何,都有一个固定的顺序,你想要填充轨道:1s,2s,2p,3s,3p,....只需从参数中减去轨道的大小,直到你达到零。类似的东西:

def klechkowski(n):
    orbitals = [("1s", 2), ("2s", 2), ("2p", 6), ("3s", 2), ...]
    output = []
    for orbital, size in orbitals:
        k = min(size, n)
        output.append("%s^%d" % (orbital, k))
        n -= k
        if n <= 0:
            break
    return " ".join(output)