言語処理100本ノック 2015年 第1章: 準備運動

00. 文字列の逆順

文字列”stressed”の文字を逆に(末尾から先頭に向かって)並べた文字列を得よ.

str = "stressed"
print(str)

str_cnt = len(str) - 1
str_rvc = ""

while str_cnt >= 0:
    str_rvc = str_rvc + str[str_cnt]
    str_cnt -= 1

print(str_rvc)

実行結果

$ python3 00.py
stressed
desserts

2017/12/27 新規追加


01. 「パタトクカシーー」

「パタトクカシーー」という文字列の1,3,5,7文字目を取り出して連結した文字列を得よ.

patotaxi = 'パタトクカシーー'

cnt = 0
pato = ''

while cnt < len(patotaxi):
    if cnt % 2 == 0:
        pato = pato + patotaxi[cnt]

cnt += 1

print(pato)

実行結果

$ python3 01.py 
パトカー

2017/12/28 新規追加


02.「パトカー」+「タクシー」=「パタトクカシーー」

「パトカー」+「タクシー」の文字を先頭から交互に連結して文字列「パタトクカシーー」を得よ.

#!/usr/local/bin/python3

pato = 'パトカー'
taxi = 'タクシー'

patotaxi = ''
cnt1 = 0
cnt2 = 0

for i in range(len(pato) + len(taxi)):
    if i % 2 == 0:
        patotaxi = patotaxi + pato[cnt1]
        cnt1 += 1
    else:
        patotaxi = patotaxi + taxi[cnt2]
        cnt2 += 1

print(pato + ' + ' + taxi + ' = ' + patotaxi)

実行結果

$ 02.py 
パトカー + タクシー = パタトクカシーー

2017/12/30 新規追加


03.円周率

“Now I need a drink, alcoholic of course, after the heavy lectures involving quantum mechanics.”という文を単語に分解し,各単語の(アルファベットの)文字数を先頭から出現順に並べたリストを作成せよ.

#!/usr/local/bin/python3

str = "Now I need a drink, alcoholic of course, after the heavy lectures involving quantum mechanics."
str_list = [] 

for StrItem in str.replace(',','').replace('.','').split():
    str_list.append(len(StrItem))

print(str_list)

実行結果

$ 03.py 
[3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, 9, 7, 9]

2017/12/30 新規追加
2017/12/31 更新


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文字を取り出し,取り出した文字列から単語の位置(先頭から何番目の単語か)への連想配列(辞書型もしくはマップ型)を作成せよ.

#!/usr/local/bin/python3

org_str = "Hi He Lied Because Boron Could Not Oxidize Fluorine. New Nations Might Also Sign Peace Security Clause. Arthur King Can."

get_one = [1, 5, 6, 7, 8, 9, 15, 16, 19]
cnt = 1

dic = {}

for str_item in org_str.replace('.','').split():
    if cnt in get_one:
       dic.setdefault(str_item[0], cnt)
    else:
       dic.setdefault(str_item[0]+str_item[1], cnt)

    cnt += 1

print(dic)

実行結果

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

2017/12/31 新規追加