Определите функцию, которая принимает в качестве аргументов подсчет различных монет США и печатает простейшее количество купюр и монет, необходимых - PullRequest
1 голос
/ 13 мая 2019

Мне нужно определить функцию consolidate_change, которая принимает в качестве аргументов подсчет различных монет США (аналогично предыдущей функции) и распечатывает простейшее количество банкнот и монет, необходимое для получения этой суммы.

Например, при вызове с аргументами 10 кварталов, 9 центов, 8 никелей и 7 копеек функция должна вывести:

Количество долларов: 3 Количество кварталов: 3 Количество центов: 1 Количество никелей: 0 Количество копеек: 2 Общая сумма: $ 3,87

В соответствии с домашней работой я также должен использовать свой метод value_of_change (), использованный в предыдущем разделе

* Второй шаг - единственная часть, в которой мне нужна помощь, если только проблема не в моем методе value_of_change ()

Мы попробовали несколько разных функций, но мой преподаватель не написал мой метод value_of_change (), который я сделал, поэтому я не следил за его ходом мыслей, а я не следовал его

мой код из предыдущего шага: определите функцию value_of_change (), которая принимает именованные аргументы, представляющие количество различных монет США (четверти, десять центов, никелей и пенни) - каждый из аргументов должен иметь значение по умолчанию 0 Функция должна возвращать общую стоимость этих монет в долларах. Например, 5 кварталов, 4 цента, 3 никеля и 2 копейки стоят 1,82 доллара.

# defines a variable value_of_change assigning values to quarters, dimes, etc. including test to print

def value_of_change(quarters, dimes, nickels, pennies):
    quarters_value = .25
    dimes_value = .10
    nickels_value = .05
    pennies_value = .01
    total = (quarters * quarters_value) + (dimes * dimes_value) + (nickels * nickels_value) + (pennies * pennies_value)
    print(round(total, 2))
value_of_change(5, 4, 3, 2)

второй шаг: Определите функцию consolidate_change, которая принимает в качестве аргументов подсчет различных монет США (аналогично предыдущей функции) и печатает простейшее количество банкнот и монет, необходимое для получения этой суммы.

Например, при вызове с аргументами в 10 кварталов, 9 центов, 8 никелей и 7 копеек функция должна вывести:

Количество долларов: 3 Количество кварталов: 3 Количество центов: 1 Количество никелей: 0 Количество копеек: 2 Общая сумма: $ 3,87 Вы должны использовать свой предыдущий метод value_of_change () в этом расчете. Подсказка: подумайте о том, чтобы конвертировать монеты в огромную кучу пенни, а затем определить, на сколько (целое число) долларов вы можете разделить их. Затем отложите эти копейки в сторону и определите, сколько (целых) четвертей вы можете сделать с остальными и т. Д.

# My code (that isn't working) for the second step

def consolidate_change(change):
    coins = [.25, .1, .05, .01]
    value = 0
    dollars = 1
    quarters = 1
    dimes = 1
    nickels = 1
    pennies = 1

    #change value in pennies
    for i in range (0, 4):
        value = round((value + (change[i] * coins[i])), 2)
    value = round(value)

    #Dollars
    for i in range (0, value):
        if dollars/value == round(dollars/value):
            dollars = dollars/value
        else:
            dollars += 1
    value = round(value)
    print (dollars)

consolidate_change([10, 9, 8, 7])

Я должен получить результат

Number of dollars: 3
Number of quarters: 3
Number of dimes: 1
Number of nickels: 0
Number of pennies: 2
Total amount: $3.87

однако мой текущий результат просто

1.0

1 Ответ

1 голос
/ 13 мая 2019

Вот моя попытка:

def consolidate_change(change):
    coins_to_use=[]
    coins = [1, .25, .1, .05, .01]
    for coin in coins:
        coins_to_use.append(int(change//coin))
        change = change%coin
    print(f"Dollars: {coins_to_use[0]}\n Quarters: {coins_to_use[1]}\n Dimes:{coins_to_use[2]}\n Nickels: {coins_to_use[3]}\n Pennies:{coins_to_use[4]} ")

consolidate_change(3.87)

Вывод: enter image description here

...