Python задача цикл for
Цитата
На вход программе подается три натуральных числа m, p,n:
- m: стартовое количество организмов;
- p: среднесуточное увеличение в %;
- n: количество дней для размножения.
Напишите программу, которая предсказывает размер популяции организмов. Программа должна выводить размер популяции в каждый день, начиная с 1 и заканчивая n-м днем.
Формат входных данных
На вход программе подается три натуральных числа.
Формат выходных данных
Программа должна вывести текст в соответствии с условием задачи.
Sample Input 1:
10
50
6
Sample Output 1:
1 10.0
2 15.0
3 22.5
4 33.75
5 50.625
6 75.9375
Вот код:
m, p, n = int(input()), int(input()), int(input())
d = m
for i in range(n):
i += 1
print(i, float(d))
d += m / p
Ответы (4 шт):
У вас практически всё правильно, кроме вот этой строки:
d += m / p
Вам нужно увеличить d на 50% в вашем случае. Подумайте - что такое "увеличить на 50%" по сути. Переведите это в обычные дроби.
Подсказка: увеличить число на 100% - это всё-равно, что умножить число в 2 раза (или добавить к числу это же число).
И вам конечно надо сразу забыть про стартовое число m, все дальнейшие расчёты в цикле идут от текущего значения популяции d.
def collon_mo(m,n,p):
s = {}
count = (100+p)/100
for i in range(1, n+1):
m *= count
g = round(m,2)
s.setdefault(i,g)
print(s)
return(True)
m = int(input('Enter start volume MO in colony: \n'))
n = int(input('Enter day number: \n'))
p = int(input('Enter evaluation of collon in %: \n'))
collon_mo(m,n,p)
вот такой код через функцию с выводом в словарь. можно потом по ключам доставать нужные количества, ключи - дни. Можно еще через цикл while...
Код работающий быстрее, без лишней переменной d:
m, p, n = int(input()), int(input()), int(input())
for i in range(n):
print(i + 1, m)
m = m + m * (p / 100)
И немного упрощённое решение, хотя многим и не отличается:
m, p, n = float(input()), float(input()), int(input())
[print(i + 1, m * (1 + p / 100) ** (i)) for i in range(n)]
m=int(input())
n=int(input())
p=int(input())
d=m
for i in range(n)
i += 1
print(i,float(d))
m += m*p*0.01
Последняя строка должна быть m += m*p*0.01.