質問編集履歴

1

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

2018/04/19 02:45

投稿

python3_beginer
python3_beginer

スコア46

test CHANGED
File without changes
test CHANGED
@@ -263,3 +263,169 @@
263
263
 
264
264
 
265
265
  ```
266
+
267
+
268
+
269
+
270
+
271
+ # can110 さんの回答を受けての追記質問
272
+
273
+
274
+
275
+ 以下のコードの☆の部分が質問内容です。
276
+
277
+
278
+
279
+
280
+
281
+
282
+
283
+ ```ここに言語を入力
284
+
285
+ コード
286
+
287
+
288
+
289
+
290
+
291
+ recipe = {'apple': 2, 'bread': 1}
292
+
293
+ stok = {'bread': 11, 'apple': 20, 'orange': 15}
294
+
295
+
296
+
297
+ min_dish = 10000#最大所持量 / 最小レシピ量より
298
+
299
+
300
+
301
+ for food, amount in recipe.items():
302
+
303
+ # 持っていない
304
+
305
+ if food not in stok:
306
+
307
+ min_dish = 0
308
+
309
+ break
310
+
311
+ # 何人前作れるか。ただし最小に制限される
312
+
313
+ dish = int(stok[food] / amount)
314
+
315
+ # dish = 10, 11
316
+
317
+ ☆質問部分
318
+
319
+   if dish < min_dish:
320
+
321
+ min_dish = dish
322
+
323
+ # min_Dish = 10
324
+
325
+ # 0人前ならこれ以上探しても意味がない
326
+
327
+ if min_dish <= 0:
328
+
329
+ break
330
+
331
+
332
+
333
+ print(min_dish)
334
+
335
+
336
+
337
+
338
+
339
+ 出力値
340
+
341
+
342
+
343
+ 10
344
+
345
+
346
+
347
+
348
+
349
+
350
+
351
+ 質問内容
352
+
353
+
354
+
355
+ ☆ dish=10,11
356
+
357
+
358
+
359
+ どちらの数字も dish < min_dish(10000)に該当する
360
+
361
+   10,11では求めたい数字は最小の10
362
+
363
+
364
+
365
+ 10,11でもどちらでも成立してしまうのでは....
366
+
367
+
368
+
369
+   なぜ、min_dish = dish の式で
370
+
371
+   10,11 のふたつの内最小の数が最後に残るのかが理解できません。
372
+
373
+
374
+
375
+  dishのリストを作成し、min()最小値を求める方がより正確のではと思ったのですが、結果はどちらとも正常でした。
376
+
377
+
378
+
379
+   重ね重ね質問申し訳ありません。お時間がある時で構いませんのでお返事頂けたら幸いです。
380
+
381
+
382
+
383
+
384
+
385
+ # dish < min_dish の集めるリスト作成
386
+
387
+ ans = []
388
+
389
+
390
+
391
+ for food, amount in recipe.items():
392
+
393
+ # 持っていない
394
+
395
+ if food not in stok:
396
+
397
+ min_dish = 0
398
+
399
+ break
400
+
401
+ # 何人前作れるか。ただし最小に制限される
402
+
403
+ dish = (int(stok[food] / amount))
404
+
405
+ ans.append(dish)
406
+
407
+ # print('dish is ', dish)
408
+
409
+ if dish < min_dish:
410
+
411
+ min_dish = min(ans)
412
+
413
+ # print('min_dish is ',min_dish)
414
+
415
+ # 0人前ならこれ以上探しても意味がない
416
+
417
+ if min_dish <= 0:
418
+
419
+ break
420
+
421
+
422
+
423
+ print(min_dish)
424
+
425
+
426
+
427
+
428
+
429
+
430
+
431
+ ```