PyQオフィシャルブログ

Pythonのオンライン学習プラットフォームPyQのオフィシャルブログです

Pythonでのダース計算の解説

こんにちは。PyQ開発チームの清原 id:hirokiky です。

PyQメールサポートの中でいただいたご質問とサポートの回答を紹介します。 (質問いただいたご本人様には掲載の許可をいただいております)

プログラミングで商、剰余というと難しい気がします。 ですが、PyQのダース計算のクエストを通して、どんな場所で使うのかを体感いただければと思います。

ダース計算についてPyQにいただいた質問とサポートでの回答をご紹介します。 Pythonでの割り算と、剰余の解説になります。

質問

クエスト3-7 水注文プログラムを作成 の「ダース単位で注文」の演習

余りが出たら、1ダース注文する(?)となっていて、

dozen = 12
order = 30

order_dozen = order // dozen
amari = order % dozen

print(str(order_dozen) + 'ダース注文します。')

if amari != 0: 
    print("あと" + str(12-amari) + "本で、もう1ダース注文できます。")

というコードになっているのですが、この中の 12-amari が何を意味するのかがいまいちわかりません。 その前にある

order_dozen = order // dozen
amari = order % dozen

というコード、これは必ず必要ということですか?

回答

まず、 order_dozen = order // dozen の部分ですが、注文希望本数(order)を12(dozen)でわり、注文希望本数から何ダース注文できるかを計算しています。

amari = order % dozen こちらは、注文希望本数(order)を12(dozen)で割った余りを求めて、12本ごとに分けた場合の端数を求めています。

例えば、注文希望本数が15本だった場合は、1ダース注文でき、3本余ります。 2ダースは注文できない状態です。

そこで、2ダース注文するためにはあと何本必要か計算するために、12- 3としますと、あと9本でもう1ダース注文できることになります。

これが、str(12 - amari)の部分になります。あと何本で1ダースになるか計算している箇所となります。

補足

プログラム的には str(dozen - amari) と書いたほうが良いですね。

クエストで学習しよう

PyQでは割り算や余りの計算や if 文という単純な内容の学習でも、常に実践的な内容から学習できるように作られています。 こうすることで単なる知識でなく、使える技術として身につけられることを目指しています。

pyq.jp