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 шт):

Автор решения: CrazyElf

У вас практически всё правильно, кроме вот этой строки:

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...

→ Ссылка
Автор решения: Semitron

Код работающий быстрее, без лишней переменной 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.

→ Ссылка