0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Pythonのprint文をいろいろ調べました

Posted at

大したことしていないので、ブランクが空くのはしょうがない:sob:

電卓叩いていた計算をプログラム化

ふと思い立つところがあって、今まで電卓叩いていた計算を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を覚えたのでヨシとします:sob:

④数値型はそろえないと計算できない?

調べてませんが、エラーが出たので覚えたこと。ほとんどの計算は値が整数なので、変数の数値型には気を配らずにプログラムを作っていたのですが、テスト中に掛け率が小数になるケースもあることを思い出しました。で、3.5とか入れるとエラーになります。

すると、3.5を格納する変数をfloatで代入するだけじゃだめなんですね。これを使う計算式で取り扱う変数全部をfloatにしとかないといけないんですね←確かめてないけど、そうなったからそうなんだと理解。

ん? とよくコードを見直してみたら、必ずしもそろってない…。ありゃあ、またエラーの原因を早合点したかなあ…。数値の型については宿題にしておきます。

#調べてる時間がなくなってしまった…

相変わらず入門レベルですが、何か勉強したらまたまとめます。

0
2
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?