SE Can't Code

A Tokyo based Software Engineer. Not System Engineer :(

文字列検索

一週間に一度のブログ更新の頻度を上げようという試みをしようと思う。 簡単なものでもいいので、コードをとにかくGistに上げて、ここに張り付けるだけでも実践しよう。

その試み第一弾が以下の文字列検索のコード。 引数一つ目の文字列の中に、引数二つ目の文字が全て存在するかを検索するコードである。

strの長さを最初に取得して、strの後ろから順番に検索をかけていく。成功すれば次のループへ進み、nが0となった時点ですべての文字を検索出来たと見なして、strを返している。途中で見つからなかった場合は、ループを抜けてコメントを出している。 注意しないといけない点は、whileの条件に「!= -1」を入れることである。pythonは数値の真偽判定を0か否かで判定しており、0を除くすべての数値をTrueと見なす特徴がある。そのため、「!=-1」が無いと、仮に検索対象の文字列上の0番目でヒットしたとすると、0が返り値と返ってくることになり、そのままループを抜けてしまうことになる。逆に、検索がヒットしなかった場合では-1が返ってくるため、真偽判定自体ではTrueと見なし、意図しない挙動となる。

以下がテストケース。

### TEST CASES ###
print "Test case 1: ", fix_machine('ogsUmtacItee', 'Itsomething') == "nothing str in search_char."
print "Test case 2: ", fix_machine('sothat I my me mine going', 'Itsomething') == 'Itsomething'
print "Test case 3: ", fix_machine('wsx0-=mttrhix', 't-shirt') == 't-shirt'

こいつを実行すると、以下となる。

True
True
True

Udacityのpython検索エンジンを作るコースの中の小テストで出された問題を一部変更したものになる。文字列操作はなかなか奥が深いので、絶賛勉強中でまだまだ先が長い。 また、これまでいろいろなweb上の勉強サイト(codacademyやpaiza)を使ってきたが、Udacityが一番頭に残りやすいところがあり、お勧め。

Remove all ads