Задача звучит так:Вклад в банке составляет x рублей. Ежегодно он увеличивается на p процентов, после чего дробная часть копеек отбрасывается. Определите, через сколько лет вклад составит не менее y рублей.
Входные данные
Программа получает на вход три натуральных числа: x, p, y (по одному числу в строке).
Выходные данные
Программа должна вывести одно целое число.
В интернете я нашел такое решение:
x = int(input())
p = int(input())
y = int(input())
i = 0
while x < y:
x *= 1 + p / 100
x = int(100 * x) / 100
i += 1
print(i)
А моё решение такое:
x=float(input("Введите ваш вклад: ")
p=float(input("Введите процент вклада: ")
y=float(input("Сколько хотите получить в итоге: ")
x, p, y = int(input()), int(input()), int(input())
x *= 100 # исходный вклад в копейках
y *= 100 # итоговая сумма в копейках
i = 0
while x < y:
i += 1
x += x * p // 100 # увеличение вклада с отбрасыванием дробных частей копеек
print(i) НЕ НАДО использовать в этой задаче вещественные числа. Совсем не надо.
Твоя же ошибка в том, что ты операцию сравнения перепутал: должно быть не x > y, а x < y. В результате у тебя цикл ни разу не выполняется.
Ошибки:
1. Условие "while x > y" должно быть "while x < y", так как ты хочешь продолжать увеличивать вклад, пока он не станет не менее "y".
2. Формула для увеличения вклада должна быть "x = x * (1 + p)", а не "x = x * p".
Потому что когда ты используешь формулу x = x * p, ты фактически умножаешь текущую сумму вклада на процентную ставку, что не соответствует задаче. Например, если твой вклад составляет 100 рублей, а процентная ставка 5% (0.05), то x * p даст тебе 5 рублей, что неверно.
Исправлено: x = float(input("Введите ваш вклад: "))
p = float(input("Введите процент вклада: "))
y = float(input("Сколько хотите получить в итоге: "))
p = p / 100
celloe = 0
while x < y:
x = x * (1 + p)
x = int(x * 100) / 100 # Отбрасываем дробную часть копеек
celloe += 1
print(celloe)