Не могу выполнить задачу на Python
Только начал изучать, поэтому не обессудьте. Задача: Пользователь делает вклад в размере a рублей сроком на years лет под 10% годовых (каждый год размер его вклада увеличивается на 10%. Эти деньги прибавляются к сумме вклада, и на них в следующем году тоже будут проценты).
Написать функцию bank, принимающая аргументы a и years, и возвращающую сумму, которая будет на счету пользователя.
Мой код:
def bank(a,time):
for each_year in time:
a = (a * 0.1)
return a
a=float(input("Сколько денег вкладываем? "))
time=float(input("На сколько лет? "))
print(bank(a))
Вот, что говорит терминал:
C:\Users\ASUS\Documents\Python> c: && cd c:\Users\ASUS\Documents\Python && cmd /C "C:\Users\ASUS\AppData\Local\Programs\Python\Python39\python.exe c:\Users\ASUS\.vscode\extensions\ms-python.python-2021.8.1105858891\pythonFiles\lib\python\debugpy\launcher 52546 -- c:\Users\ASUS\Documents\Python\Tasks\5.py "
Сколько денег вкладываем? 500
На сколько лет?5
Traceback (most recent call last):
File "c:\Users\ASUS\Documents\Python\Tasks\5.py", line 15, in <module>
print(bank(a))
TypeError: bank() missing 1 required positional argument: 'time'
Ответы (3 шт):
Твоя проблема заключается в том, что функция bank принимает 2 аргумента, а ты ввёл только один.
print(bank(a))
Нужно сделать так:
print(bank(a,time))
Есть ещё одна проблема:
for each_year in time:
a = (a * 0.1)
Таким образом твоя переменная каждый раз будет только уменьшаться. Так же ты неправильно написал цикл. Для увеличения на 10% в год нужно сделать так:
for each_year in range(time):
a = (a * 1.1)
Так то в этой задаче цикл вообще не нужен, если сумма вносится один раз в самом начале:
print(f'{a*1.1**time:0.2f}')
Вот если деньги довкладываются каждый год (помимо накопившихся процентов), тогда без цикла уже не обойтись.
Есть несколько ошибок. Первая - неправильный вызов функции, а точнее ей передаётся только один аргумент "a", а должно - a и time. print(bank(a, time))
Вторая ошибка - определение года, как float, ведь год может быть только целым. time=int(input("На сколько лет? "))
Третья - цикл в функции. Там надо использовать ф-цию range для перебора N раз, т. е. столько же раз, сколько и указано лет. for each_year in range(time):
Четвёртая - умножение на 0.1, т. к. это даёт только 10% от того, что было, а нам надо - 110%. Есть два варианта - это либо складывать, либо домножать на 1.1
a += (a * 0.1) или
a = (a * 1.1)
Полный вариант: pastebin.com/XgF4r5Qh