teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

can110さんの回答を受けて、追記質問

2018/04/19 02:45

投稿

python3_beginer
python3_beginer

スコア46

title CHANGED
File without changes
body CHANGED
@@ -130,4 +130,87 @@
130
130
  else:
131
131
  print('NG')
132
132
 
133
+ ```
134
+
135
+
136
+ # can110 さんの回答を受けての追記質問
137
+
138
+ 以下のコードの☆の部分が質問内容です。
139
+
140
+
141
+
142
+ ```ここに言語を入力
143
+ コード
144
+
145
+
146
+ recipe = {'apple': 2, 'bread': 1}
147
+ stok = {'bread': 11, 'apple': 20, 'orange': 15}
148
+
149
+ min_dish = 10000#最大所持量 / 最小レシピ量より
150
+
151
+ for food, amount in recipe.items():
152
+ # 持っていない
153
+ if food not in stok:
154
+ min_dish = 0
155
+ break
156
+ # 何人前作れるか。ただし最小に制限される
157
+ dish = int(stok[food] / amount)
158
+ # dish = 10, 11
159
+ ☆質問部分
160
+   if dish < min_dish:
161
+ min_dish = dish
162
+ # min_Dish = 10
163
+ # 0人前ならこれ以上探しても意味がない
164
+ if min_dish <= 0:
165
+ break
166
+
167
+ print(min_dish)
168
+
169
+
170
+ 出力値
171
+
172
+ 10
173
+
174
+
175
+
176
+ 質問内容
177
+
178
+ ☆ dish=10,11
179
+
180
+ どちらの数字も dish < min_dish(10000)に該当する
181
+   10,11では求めたい数字は最小の10
182
+
183
+ 10,11でもどちらでも成立してしまうのでは....
184
+
185
+   なぜ、min_dish = dish の式で
186
+   10,11 のふたつの内最小の数が最後に残るのかが理解できません。
187
+
188
+  dishのリストを作成し、min()最小値を求める方がより正確のではと思ったのですが、結果はどちらとも正常でした。
189
+
190
+   重ね重ね質問申し訳ありません。お時間がある時で構いませんのでお返事頂けたら幸いです。
191
+
192
+
193
+ # dish < min_dish の集めるリスト作成
194
+ ans = []
195
+
196
+ for food, amount in recipe.items():
197
+ # 持っていない
198
+ if food not in stok:
199
+ min_dish = 0
200
+ break
201
+ # 何人前作れるか。ただし最小に制限される
202
+ dish = (int(stok[food] / amount))
203
+ ans.append(dish)
204
+ # print('dish is ', dish)
205
+ if dish < min_dish:
206
+ min_dish = min(ans)
207
+ # print('min_dish is ',min_dish)
208
+ # 0人前ならこれ以上探しても意味がない
209
+ if min_dish <= 0:
210
+ break
211
+
212
+ print(min_dish)
213
+
214
+
215
+
133
216
  ```