大したことしていないので、ブランクが空くのはしょうがない。
電卓叩いていた計算をプログラム化
ふと思い立つところがあって、今まで電卓叩いていた計算をPythonでプログラムにしてみました。言ってみれば草の根RPAですよ(別に偉そうにいうほどのものでもない)。
やりたいことは以下の通り。
- 計算式はほぼ一定
- 変数は4つで、ただの掛け算
- 値段
- 掛け率
- 数量
- 消費税率
- 計算結果は支払先にメールでお知らせ
- 数値をはめ込んだ計算式、計算結果、その他の情報と一緒に、送る文面も生成したい
- 数値は3桁ずつ区切りたい
変数にした諸情報をコードの中に書き込むのか、input
で入力するのかは、どっちがいいのか思案中。計算に使う数値はインプットして、文字の入力はコードの中に書くようにしています。
遠い将来は入力値をDBに追加したり、そのDBから引っ張って変数に代入したりしたいですが、今はあまり考えますまい。
で、ひと通り作って、自分の仕事にも使えそうだというところまで確認。
そこで、今回の「身に付いたこと」です。主にprint文で文字や数値を表示するときの取り扱いに関して。
①空き行はprint()で
確認かたがたコードに書き込んだ情報をまず表示するようにしました。計算結果を含むお知らせ文章との間を空けるのにprint()
を使いました。やっぱり最初はそういうことにも悩むよね。
なお、3行空けたかったので、ついでにfor文もおさらいすることにして、
# 空き行挿入
for i in range(2):
print()
range()
の書き方もprint()
の書き方もいちいちググらないと正しく書けません(>_<)。
②数値を3桁で区切ってprint
print文の中で10万円単位の金額を取り扱います。7桁になることは滅多にありませんが、通常6桁にはなる。やはり3桁で区切りを入れたいところです。
調べたところ、print('{:,}'.format(onedan))
で3桁区切りになるらしいとのことでした。実際にはonedanのところは計算結果を小数点以下なしで表示するためにint文で整数に直しています。ここも少々はまりポイント(後述)。
で、print('お値段は……', '{:,}'.format(onedan), '円です♪')
とやったところエラーになったので、パラメータの先頭に入れたら解決しました。ところがこれだと
お値段は……
999,999 円です♪
となってしまったので、この2行をつなげなければなりません。
③複数のprint文を改行なしでつなげるend
それにはprint文を複数並べても、行を変えずに表示する必要があります。調べたらやはりありました。print文の引数の最後に, end = 'ほにゃらほにゃら'
と付けると、ほにゃらほにゃらの後ろに次のprint文が続くそうです。
自分のコードでいうと、
print('お値段は……', end = '')
print('{:,}'.format(onedan), '円です♪')
お値段は…… 999,999 円です♪
と返って来ます。でも、今それを確認しようと
print('お値段は……', '{:,}'.format(onedan), '円です♪')
end
を覚えたのでヨシとします
④数値型はそろえないと計算できない?
調べてませんが、エラーが出たので覚えたこと。ほとんどの計算は値が整数なので、変数の数値型には気を配らずにプログラムを作っていたのですが、テスト中に掛け率が小数になるケースもあることを思い出しました。で、3.5とか入れるとエラーになります。
すると、3.5を格納する変数をfloatで代入するだけじゃだめなんですね。これを使う計算式で取り扱う変数全部をfloatにしとかないといけないんですね←確かめてないけど、そうなったからそうなんだと理解。
ん? とよくコードを見直してみたら、必ずしもそろってない…。ありゃあ、またエラーの原因を早合点したかなあ…。数値の型については宿題にしておきます。
#調べてる時間がなくなってしまった…
相変わらず入門レベルですが、何か勉強したらまたまとめます。