Help us understand the problem. What is going on with this article?

言語処理100本ノック03

More than 3 years have passed since last update.

はじめに

言語処理100本ノックの元サイトのリンク
http://www.cl.ecei.tohoku.ac.jp/nlp100/#data

今回は、あちこちぶつかりながらもなんとか調べて、目的のリストを出力するところまで行きました。

03 円周率

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

03knock.py
from collections import Counter
st="Now I need a drink, alcoholic of course, after the heavy lectures involving quantum mechanics."

words=st.replace(",","").replace(".","").split()

list=[]

for i in words:
    k=len(i)
    list.append(k)
print (list)

出力結果
[3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, 9, 7, 9]

最初に躓いたのはスペースで区切る方法。調べるとすぐ出てきました
https://qiita.com/como1559/items/abfcd4f0ce2f611d5193
次に、','と'.'をどうするか悩みなしたが、どうもreplaceとsplit関数は
.replace().split()
と重ねることができるみたいです
http://python-remrin.hatenadiary.jp/entry/2017/04/24/174405

次に躓いたのがlist.append()。最初自分は
list=list.append()
としていましたが
'NoneType' object has no attribute 'append'
とエラーが出てしまう...どうもappend関数は値を返すのではなくて書き換えるみたいです
http://sphdien.hatenablog.com/entry/2013/12/05/181031

最後に躓いたのがfor文の分岐
文字変数を分岐に使えるとは...知らなんだ

gdofrank
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away