こんにちは。PyQ開発チームの清原 id:hirokiky です。
PyQメールサポートの中でいただいたご質問とサポートの回答を紹介します。 (質問いただいたご本人様には掲載の許可をいただいております)
プログラミングで商、剰余というと難しい気がします。 ですが、PyQのダース計算のクエストを通して、どんな場所で使うのかを体感いただければと思います。
ダース計算についてPyQにいただいた質問とサポートでの回答をご紹介します。 Pythonでの割り算と、剰余の解説になります。
質問
演習 - ダース単位で注文しよう で、余りが出たら、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)
と書いたほうが良いですね。 *1
クエストで学習しよう
PyQでは割り算や余りの計算や if 文という単純な内容の学習でも、常に実践的な内容から学習できるように作られています。 こうすることで単なる知識でなく、使える技術として身につけられることを目指しています。
PyQブログの更新は、SNSで告知しています。
その他リリース情報・Pythonお役立ち情報なども配信しています。 Python・プログラミング学習の情報に興味のある方は フォローしていただくと、最新情報をいち早く知ることができます。
PyQ公式Twitter
PyQ公式Facebook
Pythonオンライン学習サービスPyQはこちら
*1:現在、模範回答は「str(dozen - amari)」に修正済みです