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

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

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

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

Q&A

解決済

2回答

1932閲覧

Python 貨幣の組み合わせを表示

Assun

総合スコア6

Python

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

1グッド

0クリップ

投稿2022/06/21 01:50

編集2022/06/21 15:32

Pythonプログラミング初心者です。1000円以下の金額を入力すると貨幣(500, 100, 50, 10, 5, 1円玉)の組み合わせを(貨幣の種類ごとの枚数)表示するプログラムの穴埋めに取り組んでいます。
配列yの定義が抜けているという問題部分のミスをご指摘いただいて修正し、配列cとwhile文を穴埋め部分に追記して書き直し金額を入力したらエラーは出なかったのですが、出力結果で貨幣の枚数が全てゼロで表示されてしまいます。穴埋め部分の問題点をご指摘いただければ幸いです。

python

1y = [0] * 7 #追記 2y[1] = 500 3y[2] = 100 4y[3] = 50 5y[4] = 10 6y[5] = 5 7y[6] = 1 8 9a = int(input()) 10 11#ここから穴埋め 12i = 1 13c = [0] * 7 14while (i > 6 or a == 0): 15 c[i] = a / y[i] 16 a = a % y[i] 17 i = i + 1 18 19#ここまで 20 21i = 1 22while i <= 6: 23 print(y[i], "円玉:", c[i], "枚") 24 i = i + 1
aaabbbsss👍を押しています

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

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

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

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

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

guest

回答2

0

ベストアンサー

以下のようになります。
TakaiYさんも指摘していますが、
1.y,cを最初に定義しないといけません。
2.y[0],c[0]を今回使用していませんが、通常は、
y = [ 0] * 6
とし、y[0]~y[5]まで使用するのが一般的です。
但し、今回のようにy[1]~y[6]を使用するのがダメというわけでもありません。
3.端数切捨ての割り算は//になります。/を用いると、小数点以下の値まで計算されます。(10/3 -->3.3333)

python3

1y = [ 0 ] * 7 #追加 2c = [ 0 ] * 7 #追加 3y[1] = 500 4y[2] = 100 5y[3] = 50 6y[4] = 10 7y[5] = 5 8y[6] = 1 9 10a = int(input()) 11 12#ここから穴埋め 13i = 1 14while (i <= 6 and a != 0): #修正 15 c[i] = a // y[i] #修正 端数切捨ては//を使う 16 a = a % y[i] 17 i = i + 1 18 19#ここまで 20 21i = 1 22while i <= 6: 23 print(y[i], "円玉:", c[i], "枚") 24 i = i + 1 25

投稿2022/06/21 02:41

編集2022/06/21 02:47
tatsu99

総合スコア5424

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

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

Assun

2022/06/21 03:00

無事正しく貨幣枚数表示されました!ご丁寧にご説明くださりありがとうございました。配列の書き方と端数切り捨ての方法勉強になりました。
guest

0

前の問題もそうでしたけど、配列の使いかたが間違えています。
もともとそうなんですか? 出題者に問い合せるのがいいでしょう。

また、前の問題と同じエラーなのですから、類推すれば自分でも解決できると思います。
なぜそのようにするのか考えながらやるといいと思います。

今回も最初に以下の記述を追加すると進むと思います。

python

1y = [0] * 7

穴埋め部分はまだまだですね。 条件分岐(if)と繰り返し(for)が 入るはずですよ。

投稿2022/06/21 01:57

TakaiY

総合スコア12657

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

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

Assun

2022/06/21 02:04 編集

やはりそうなんですね...はい、出題はこのようになっているので私たちは問題を解く際、穴埋め部分しか追記することを許されていないので前提として前半部分は書き換えられないのです。ですが、Takai様おっしゃるようにもしその配列部分が修正されなければ進まないとなれば問題がおかしいということになるのでしょうか...(素人質問で恐縮です) 前回もご回答ありがとうございました!一応結果としては穴埋め部分の修正だけで配列定義のエラーが解決したので今回も何か方法があるのかと思い質問させていただきました。
TakaiY

2022/06/21 06:32

> Takai様おっしゃるようにもしその配列部分が修正されなければ進まないとなれば問題がおかしいということになるのでしょうか... 解けない問題を解けというのはおかしな話ですから、そこはきちんと問い合せをすべきです。 また、配列は使う前に用意しておく必要がありますので、穴埋めのところでどうにかできるものではありません。 前回 > 一応結果としては穴埋め部分の修正だけで配列定義のエラーが解決した ということはないはずです。 確認ください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問