Advertisement
mirovlad

Coins with a dictionary

May 27th, 2022 (edited)
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.38 KB | None | 0 0
  1. # Като по-сложен вариант може да се ползва речник number_per_coins,
  2. # който да помни по броя монети от всяка стойност, които да се върнат на човека.
  3. # Но задачата се интересува само от общия брой моменти,
  4. # така че това е "излишно усложнение".
  5. # Но пък може да е потенциално полезно -- например за да се каже на машината
  6. # върни му на човека толкова от тия момнети, толкова от ония и толкова от третите
  7.  
  8. resto_in_leva  = float(input())
  9. resto_in_cents = resto_in_leva * 100  # все още ще е float
  10. resto_in_cents = round(resto_in_cents)  # в Python 3 round() връща integer
  11. # Стойностите на монетите от висока към ниска
  12. coins_values_in_cents = [200, 100, 50, 20, 10, 5, 2, 1]
  13. number_per_coin = {}  # празен речник
  14.  
  15. # Минаваме през стойностите на монетите от високи към ниски
  16. for coin_value in coins_values_in_cents:  #
  17.     # Брой монети от тази стойност, които влизат стойността на рестото -- целочислено деление
  18.     number_per_coin[coin_value] = resto_in_cents // coin_value
  19.     # Остатъка от рестото, който остава да разпределим върху по-ниските монети
  20.     resto_in_cents = resto_in_cents % coin_value
  21.  
  22. # Така виждаме структурата на РЕЧНИКА number_per_coin,
  23. # За 1.53 лв тя ще е {200: 0, 100: 1, 50: 1, 20: 0, 10: 0, 5: 0, 2: 0, 1: 3}
  24. #print(coins_values_in_cents)
  25.  
  26. # Ако върху РЕЧНИКА приложим метода му .values(), получаваме същите стойности, но в СПИСЪК
  27. # Така виждаме структурата на СПИСЪКА number_per_coin.values(),
  28. # За 1.53 лв тя ще е нещо като [0, 1, 1, 0, 0, 0, 0, 3]
  29. #print(coins_values_in_cents.values())
  30.  
  31. # С функцията sum(СПИСЪК) намираме общия брой монети
  32. # За 1.53 лв тя ще е 0+1+1+0+0+0+0+3 = 5
  33. print(sum(coins_values_in_cents.values()))
  34.    
  35.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement