Вывести «n» результатов функции «n» раз - PullRequest
0 голосов
/ 21 марта 2020

Я хочу напечатать своего рода пирамиду. Пользователь вводит целое значение «i», которое отображается i-раз.

Например, если input = 5

1
22
333
4444
55555

Я пробовал это:

input=5
for i in range(input+1):
    print("i"*i)
    i=i+1

В результате

i
ii
iii
iiii
iiiii

Проблема в том, что (насколько я знаю), только строка может быть напечатана 'n' раз, но если я вынимаю кавычки вокруг "i", она становится (i * i) и выдает квадраты:

0
1
4
9
16
25

Есть ли простой способ обойти это?

Спасибо!

Ответы [ 3 ]

0 голосов
/ 21 марта 2020

Просто преобразуйте ваше значение int l oop в str перед построением строки вывода, умножив:

input = 5
for i in range(1, input+1):
    print(str(i) * i)
0 голосов
/ 22 марта 2020
num = int(input('Type a number. ='))
num2 = 1

for i in range(0, num):
    print(num*num2)
    num += 1
    num2 += 1

Строка 1: получить ввод от пользователя, преобразовать его в целое число и сохранить в переменной (num). Строка 2: присвоить num2 1. Строка 4: L oop num раз. Строка 5: напечатайте num num2 раз. Строка 6: увеличение num на одну Строку 7: увеличение num2 на одну

0 голосов
/ 21 марта 2020

Попробуйте это:

a = 5
for i in range(a): # <-- this causes i to go from 0,1,2,3,...,a-1
    print("{}".format(i+1)*(i+1)) # < -- this creates a new string in each iteration ; an alternative would be str(i+1)*(i+1)
    i=i+1 # <-- this is unnecessary, i already goes from 0 to a-1 and will be re-created in the next iteration of the loop.

Это создает новую строку в каждой итерации l oop. Обратите внимание, что for i in range(a) само пройдет через диапазон go. Нет необходимости дополнительно увеличивать i в конце. В общем, считается плохой практикой менять показатели, превышающие ваши.

...