質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

1149閲覧

期待していた計算結果と異なる結果がでる

tenmei

総合スコア8

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/09/03 01:59

前提・実現したいこと

自販機でお金を入れて商品を買い、できるだけ少ない枚数(個数)でお釣りを返す。
なぜか出力結果のお釣りの合計が、入れたお金から商品の金額を引いた値と等しくない
なぜこのようなことが起こっているのか、そして解決方法が知りたい

該当のソースコード

python

1m_in = int(input()) 2goods = int(input()) 3 4m_list = [10000, 5000, 1000, 500, 100, 50, 10, 5, 1] 5pay_dict = {} 6 7 8m_out = m_in - goods 9print(m_out) 10for i in m_list: 11 count = 0 12 while m_out > i: 13 m_out -= i 14 count += 1 15 if count != 0: 16 pay_dict[i] = count 17 18print(pay_dict)
1000 150 850 {500: 1, 100: 3, 10: 4, 5: 1, 1: 4}

試したこと

載せているコードにもあるようにm_outが正しく出力されているか確かめた

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

1T2R3M4

2020/09/03 02:08

おつりが500の時whileどう動くか確認しみては。
guest

回答2

0

ベストアンサー

whileの条件式が間違っているため。

Diff

1- while m_out > i: 2+ while m_out >= i:

たとえば、おつり1円(m_outが1)を支払うのに、1円玉(iが1)を何枚使うかで考えてみてください。

投稿2020/09/03 02:10

Daregada

総合スコア11990

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tenmei

2020/09/03 02:37

ありがとうございます!
guest

0

おつりが硬貨と同額の場合の処理ってのがないですねえ

投稿2020/09/03 02:09

y_waiwai

総合スコア87784

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問