00,01,02 : 言語処理100本ノックでPythonのお勉強
言語処理100本ノックというPythonや自然言語処理を学ぶのに最適なウェブページがあるので、やってみる。こちらが2015年版の問題週。今回は00から03までやってみます。
環境
macOS Sierra 10.12.2 python3.5.2 (pyenv)
00. 文字列の逆順
"stressed"という文字列を逆順にする。 Pythonでは、スライスという機能があり、この機能を使うと簡単に逆に出来る。 スライス機能はコロンで区切って、3つの値を入力して処理させることができる。 例えば、"helloworld"[0:-1:2]と書くと、0文字目から末尾の1つ手前まで一文字おきにを切り取ることが出来て、"hllol"を取り出すことが出来る。-1は逆順を表す。
# knock1_00.py l = "stressed" re_l = l[::-1] print(re_l)
01.パタトクカシーー
「パタトクカシーー」という文字列の1,3,5,7文字目を取り出して、連結し文字列にする。 これもスライス機能を使う。
# knock_01.py l = "パタトクカシーー" l2 = l[::2] print(l2) # 2,4,6,8文字目を取り出す場合はこうする。 l3 = l[1::2] print(l3)
02.「パトカー」+「タクシー」=「パタトクカシーー」
「パトカー」と「タクシー」という文字列を先頭から交互に連結して、「パタトクカシーー」という文字列をつくる。
# knock_03.py l = [] l2 = 'パトカー' l3 = 'タクシー' for i in range(len(l2)): l.append(l2[i]) l.append(l3[i]) l = ''.join(l) # 他の方法1 - zip関数を使う。こっちの方が随分簡潔。 result = '' for (a, b) in zip(l2, l3): result += a + b print(result)