2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Pythonで言語処理100本ノック2015 問題01

Last updated at Posted at 2017-11-12

Pythonは簡潔で直感的に書けて非常に気持ちよくコーディングができてます。
早速実装を見ていきましょう。

#実装

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

文字列から取得する位置が1,3,5,7と奇数だったので
以下を試して見ました。

Python3
s = 'パタトクカシーー'
print(s[::2])
実行結果
パトカー

問題なさそう。一つ飛ばしで文字列取得するプログラムがめちゃ短くできました。
物足りない人は別の実装パターンを下記に記載しましたのでどうぞ。

#別パターン

規則性がない場合も考えて以下のように実装しました。

python3
s = 'パタトクカシーー'
match_list = [1,3,5,7]

answer = ""
i = 1

for chara in s:
    if i in match_list:
        answer += chara
    i += 1

print(answer)
結果
パトカー

これはさらに以下のようにjoin()を使うと
データ出力フォーマットも広く対応できます。
 join()を使った場合だと、以下のようなリスト内包表記が読みやすいと感じてます。
あと、文字列シーケンスをループするときにenumerate()だとインデックスも取得できて楽ですね。

python3
s = 'パタトクカシーー'
match_list = [1,3,5,7]

answer = "".join([chara for i, chara in enumerate(s) if i+1 in match_list])

print(answer)
結果
パトカー

##NGシーン

python3
s = 'パタトクカシーー'
match_list = [1,3,5,7]

answer = []
i = 1

for chara in s:
    if i in match_list:
        answer.append(chara)
    i += 1

print(answer)
結果
['パ', 'ト', 'カ', 'ー']

愛くるしい凡ミスですが、僕はやりがちです。

以上です!

#参照URL
問題文は:http://www.cl.ecei.tohoku.ac.jp/nlp100/
strオブジェクトに関して:https://docs.python.jp/3/library/stdtypes.html#str

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?