Python100本ノック 11本目~15本目
Python100本ノック、11本目から15本目についてです。
11本目:テキストファイル内の文字をアルファベット順に表示せよ。
ファイル操作はwith open
でやると習っていたので、open
を使っていませんでした。
open
とwith open
で少々違いがあるようです。
ファイル読み書き file open read write | Python Snippets
ファイルから読み込んだ文字列をリストに変換する方法で詰まりました。
~.read().split()
すれば良かったんですね。
split(sep)
引数で指定された文字で文字列を区切ったリストを返す。
引数無しだと空白文字(連続スペースやタブ文字も含む)で分割される。
12本目:テキストファイル内で指定した文字がいくつ含まれているか数える
記事内の解法と大体同じ流れでした。
この問題では、複数行のテキスト走査にも対応できるようにしました。
※with
ブロックでファイルを読み込んだ後、for line in file
で各行を抽出
13本目:摂氏と華氏を自動変換
リストのスライスの使い方で詰まりました。
自分のコードは数値の部分が2桁の場合しか対応できていませんでした...。
リストのスライス
リストを部分的に取得する方法。
スライスを使った部分リストの取得 - リスト - Python入門
文字列についても、同じ方法で部分文字列を取得することができる。
14本目:入れ子のリストを平らにする(=平滑化)
リストの要素が数値かリストかを調べる方法で詰まりました。
多重に入れ子になっている要素にも対応するため、extend
の分岐で再帰を使うこともできませんでした。
type(object)
引数に指定されたオブジェクトの型を取得、確認する組み込み関数。
Pythonで型を取得・判定するtype関数, isinstance関数 | note.nkmk.meis演算子
オブジェクトのIDを比較し、2つのオブジェクトが同一かどうかを調べる演算子。
== と is の違い | Python-izm
15本目:対話型残業代自動算出システム
input
とfloat
をうまく使えたのは良かったです。
時間基準で計算していたので、残業時間の分単位がうまく行かないケースがありました。
記事内の解法のように、入力された時刻を分基準に直して、
残業時間の時間単位をround(残業時間の分単位/60, 2)
で表す点がポイントかなと思います。