python

【Python】言語処理100本ノック  04. 元素記号

この記事の内容

問題文

04. 元素記号

“Hi He Lied Because Boron Could Not Oxidize Fluorine. New Nations Might Also Sign Peace Security Clause. Arthur King Can.”という文を単語に分解し,1, 5, 6, 7, 8, 9, 15, 16, 19番目の単語は先頭の1文字,それ以外の単語は先頭の2文字を取り出し,取り出した文字列から単語の位置(先頭から何番目の単語か)への連想配列(辞書型もしくはマップ型)を作成せよ.

https://nlp100.github.io/ja/ch01.html

回答

sentence = 'Hi He Lied Because Boron Could Not Oxidize Fluorine. New Nations Might Also Sign Peace Security Clause. Arthur King Can.'
# split()関数で文字列を分割しリスト化する
words = sentence.split()
# 先頭の1文字を取り出す番号
initial = [1, 5, 6, 7, 8, 9, 15, 16, 19]

answer = {}

# enumerate()で要素とインデックスを同時に取り出せす
for i, word in enumerate(words): 
    # inを使用してリストやタプルなどに特定の要素が含まれるかどうかを確認・判定
    # initialに合わせるためインデックス+1
    if i + 1 in initial: 
        # スライス1文字目
        answer[i + 1] = word[0] 
    else: 
        # スライス2文字目まで
        answer[i + 1] = word[:2] 

# {1: 'H', 2: 'He', 3: 'Li', 4: 'Be', 5: 'B', 6: 'C', 7: 'N', 8: 'O', 9: 'F', 10: 'Ne', 11: 'Na', 12: 'Mi', 13: 'Al', 14: 'Si', 15: 'P', 16: 'S', 17: 'Cl', 18: 'Ar', 19: 'K', 20: 'Ca'}
print(answer)