我正在尝试根据原子序数
生成一个建立元素电子配置的函数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
我无法弄清楚转换结果的方式以及我应该为每一层重复哪个过程
答案 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)