2017-12-12 4 views
0

私はそれが結果は以下のようになります原子番号プログラミング:Aufbau原理

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 -^^ 2 2P> 1秒^ 2つの2Sを6つの3S^2の3p^5

私は私の結果を変換する方法を把握することはできませんし、どのプロセスiはそれぞれの層に関係なく、入力の

+2

「Z」はいつ変更されますか? – Elazar

+0

@Elazarは、ループ内の最後の行がZ + = -1であるとみなします – GSazheniuk

+0

ユーザーが最初にZを選択したのは原子番号 –

答えて

2

のために繰り返す必要があり、あなたが記入したい一定の順序があります軌道は: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) 
+0

(Nit:' assert n> = 0'と ' n == 0') – Elazar

+0

@chepnerこの回答は意味をなさないが、https://en.wikipedia.org/wiki/Aufbau_principleの内容はこれに近いものではない。 – GSazheniuk

+0

真実ですが、私は 'n <0'と' n == 0'を区別することはできません。 – chepner

関連する問題