学んだことをメモ。
すっかりご無沙汰してしまったのは、向上していない証拠。
自分の中で一つの天井に突き当たり、そこを打破できないでいる。
次第にやる気が無くなって別の勉強に逃げてしまう。
先日クリアした課題でいくつか新しいことを学んだので忘れずにメモしておこう。正しいかどうかより書き留めておくことを重視。
平方根(ルート)は ** 0.5 でできる
電卓にも標準でついている平方根 (sqrt) が、Pythonではmathモジュールをインポートしないと使えない。不便だなと思ったら、それはつまり0.5乗なのだから標準の演算子でできることを知った。そりゃそうか。
eval メソッド
"1250" のような文字列としての数字は int() などを使って数値にできる。
"[5, 7], [2, 3]" のようなリストなどの場合はどうするのか知らなかった。標準メソッド eval() を使えば実体のあるオブジェクトへと変換できる。
>>> a, b = eval("[5, 7], [2, 3]")
とか。
丸めと桁表示はroundを使う
端数が出る値は小数点第2位まで表せ、みたいな課題はよく出る。
だが四捨五入を調べていくと、roundとかdecimalとかいろいろあって一体どれを使うべきなのかが判らない。「コンピュータは0.1を正しく表現できません」などと脅すようなことも言われるし。そしてroundは「偶数丸め」であり四捨五入ではないので注意してください、とある。なにそれ? 知らなかった。小数点以下第1位を偶数丸めとする場合、1.5→2、2.5→2、3.5→4になる。端数がちょうど0.5なら切り捨てと切り上げのうち結果が偶数となる方へ丸める。これは四捨五入より「望ましい」とされているらしい。
それと、桁の表示法もいろいろあってよく判らない。ここでformat()メソッドを使い、結果が整数でも125.000などと出てしまうのをどう回避するかでまた悩みが増える。いろいろと調べていって、Decimalというモジュールをインポートし、normalize()を用いる、という結論になった。うわーめんどくせー。
だが、賢者のコードを見て知った。とりあえず僕程度のリテラシーにはround()メソッドを使っとけ、でいいらしい。
>>> round(3.141592, 3)
3.141
>>> round(5/2, 3)
2.5
偶数丸めと聞いてビビッてしまっていたが、考えてみたら偶数丸めと四捨五入で差が生じる瞬間ってそんなにないし、「望ましい」って言ってるんだから気にしなくてもいいのかも。
この記事が気に入ったらサポートをしてみませんか?