Использование% и // для поиска делителей
Я работаю над небольшим заданием. Задача состоит в том, чтобы запрограммировать калькулятор для банкомата. Базовая версия может выдавать следующий вывод:
Initial amount ($): 348
$100
$100
$100
$20
$20
$5
$2
$1
Вот моя попытка:
#Pseudocode:
"""
Ask user for amount
For each demonination in [100, 50, 20, 10, 5, 2, 1]:
Integer-divide amount by demonination
Subtract demonination from amount to leave residual
If residual // demonination > 1, add 1 to the count of this note, and repeat
Otherwise go to the next denomination
"""
def find_denom(amount):
number_of_notes = 0
banknotes = [100, 50, 20, 10, 5, 2]
for note in banknotes:
residual = (amount // note)
if residual // note > 1:
number_of_notes += 1
return residual, number_of_notes
amount = int(input("Enter initial amount ($): "))
residual, number_of_notes = find_denom(amount)
Если я введу 348 в качестве начальной суммы, я получу следующие значения переменных: amount=348
, number_of_notes=3
, что соответствует количеству банкнот в 100 долларов amount
, а также residual=174
,
Я просто пытаюсь получить мой find_denom
Функция работает в первую очередь, но я не уверен, куда идти дальше.
2 ответа
В других, чтобы достичь того, что вы хотите, используйте эту функцию можно использовать
def find_denom(amount):
banknotes = [100, 50, 20, 10, 5, 2, 1]
for note in banknotes:
counter = 0 # reassign zero to counter for every loop
if note <= amount:
number_of_notes = amount // note # get the number of each note in amount
amount = amount % note # assign the remaining amount to amount
while counter < number_of_notes: # check it the number of counter has exceeded the number of notes
print('$'+str(note)) #convert note to str and concatenate $ with it and display the note
counter += 1
amount = int(input("Enter initial amount ($): "))
find_denom(amount)
Переменная, которую вы называете residual
не остаток, это счет этой записки. Чтобы получить остаток, умножьте примечание на количество и вычтите это из суммы. Вы также можете получить этот же номер, используя %
оператор модуля.
Вы должны найти первую банкноту, которая меньше суммы, а затем выполнить расчет.
def find_denom(amount):
banknotes = [100, 50, 20, 10, 5, 2]
for note in banknotes:
if note <= amount:
number_of_notes = amount // note
residual = amount % note
return residual, number_of_notes
return amount, 0