编程:Aufbau Princi

2024-10-03 21:24:42 发布

您现在位置: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-->;1s^2 2s^2 2p^6 3s^2 3p^5

我不能为每一层重复转换的结果


Tags: 函数gt元素ifdef电子elseappend
1条回答
网友
1楼 · 发布于 2024-10-03 21:24:42

不管输入是什么,都有一个固定的顺序,你想要填充轨道: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)

相关问题 更多 >