Умножить каждый символ строки на его порядковый номер

Нужно строки, содержащие символы строки s умножать на их порядковый номер.

s = str(input())
for i in range(len(s)-len(s[:3])):
        print(s[i])
        print(s[i+1]*2)
        print(s[i+2]*3)
        print(s[i+3]*4)

У меня получился такой код, но главная загвоздка в том, что слово может быть любой длины, и я уже долго не могу додуматься как это сделать. Помогите, пожалуйста!

Пример:

Sample Input:

back

Sample Output:

b
aa
ccc
kkkk

Ответы (5 шт):

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

Кроме комментаторов, ответ никто не дал, поэтому внесу свои 5 копеек:

s = str(input())
n = 0
for i in s:
    n += 1
    print(i*n)

Всё равно цикл проходит поочерёдно по символам, поэтому можно прибавлять значение переменной после каждой итерации и число будет равно порядковому номеру буквы в слове.

→ Ссылка
Автор решения: eri
print(*(c*i for i, c in enumerate(input(), start=1)), sep='\n')
→ Ссылка
Автор решения: Даниил Таушканов
s = str(input())

for i in range(len(s)):

        print(i*s[i]+s[i])
→ Ссылка
Автор решения: MarianD
s = input()                # Не надо применить str() т.к. input() возвращает строку

for i, char in enumerate(s, start=1):
    print(i * char)

Объяснение:

Стандартная функция enumerate() нумерует символы строки, возвращая пары типа (порядковый_номер_символа, символ).

Например, enumerate("Мама") выдает постепенно пары

(0, "М") 
(1, "а") 
(2, "м") 
(1, "а")

Чтобы начать нумерование не нулей, а с числа 1, нужно добавить параметр start=1.

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

Рекурсия:

def f(word, times=1):
    if len(word) == 0:
        return
    print(word[0] * times)
    f(word[1:], times+1)

f("back")
→ Ссылка