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)