mocchaso note

サーバーエンジニアが何か色々呟いているところ。

Python100本ノック 11本目~15本目

Python100本ノック、11本目から15本目についてです。

qiita.com

11本目:テキストファイル内の文字をアルファベット順に表示せよ。


ファイル操作はwith openでやると習っていたので、openを使っていませんでした。
openwith openで少々違いがあるようです。
ファイル読み書き file open read write | Python Snippets

ファイルから読み込んだ文字列をリストに変換する方法で詰まりました。
~.read().split()すれば良かったんですね。

  • split(sep)
    引数で指定された文字で文字列を区切ったリストを返す。
    引数無しだと空白文字(連続スペースやタブ文字も含む)で分割される。


12本目:テキストファイル内で指定した文字がいくつ含まれているか数える


記事内の解法と大体同じ流れでした。
この問題では、複数行のテキスト走査にも対応できるようにしました。
withブロックでファイルを読み込んだ後、for line in fileで各行を抽出


13本目:摂氏と華氏を自動変換


リストのスライスの使い方で詰まりました。
自分のコードは数値の部分が2桁の場合しか対応できていませんでした...。

  • リストのスライス
    リストを部分的に取得する方法。

スライスを使った部分リストの取得 - リスト - Python入門

文字列についても、同じ方法で部分文字列を取得することができる。


14本目:入れ子のリストを平らにする(=平滑化)


リストの要素が数値かリストかを調べる方法で詰まりました。 多重に入れ子になっている要素にも対応するため、extendの分岐で再帰を使うこともできませんでした。


15本目:対話型残業代自動算出システム


inputfloatをうまく使えたのは良かったです。
時間基準で計算していたので、残業時間の分単位がうまく行かないケースがありました。

記事内の解法のように、入力された時刻を分基準に直して、
残業時間の時間単位をround(残業時間の分単位/60, 2)で表す点がポイントかなと思います。