なんでそんなことしたの
某プログラミングスキルチェックサイトで問題を解いていたのですが、2桁の数字を0埋めで表示させたい場面がありました。
この問題はPythonで挑みました。恐らくPythonに慣れ親しんでいる方であれば、文字列型の.format
関数を使うというのがパッと思い浮かぶのではないかと思われます。特にこの問題は2つ2桁の数字を並べるものだったので、後でそれが最適解だったことに気付きました。
ただ、私は普段JavaScriptやTypeScriptに慣れ親しんでいたので、そこで使いがちな手法を使うことにしました。
def to2digit(num):
return ('0' + str(num))[-2::]
// ...
hoge = to2digit(hour)+to2digit(min)
…おわかりいただけたでしょうか。
もう既にタイトルでネタバレになっていますが。
これどうなるの
この動作を括弧の内側の方から追っていきます。
min
は数字だと思って使ってしまったビルトイン関数ですが、str(min)
はエラーにならず、文字列になるようでした。この値は<built-in function min>
になるようでした。
これに対して頭に文字列0
を付けた上で後ろの2文字を取ると、n>
になります。
そういうことで、上記のhoge
は、23n>
とかそんな感じの値になります。
もう言ってしまうと、変数名から察せるように時刻を扱っていた訳ですが、そんな珍妙な値が完成してしまっていました。なんということでしょう。
終わりに
- 予約語や定数的なものになってしまいそうな命名には気をつけたい
- 便利な機能は覚えてどんどん使っていきたい
と思ったのでした。