У меня был хороший ответ на этот сложный вопрос:

enter image description here

Я думал, что я довольно умно делал это в две строки (они дают вам первую строку), но это не работает, так как я использую 2 для циклов.

for i in range(1,int(input())): #More than 2 lines will result in 0 score. Do not leave a blank line also
    [print(([i]*i)[index],end = "\n" if index == (len([i] * i)-1) else '') for index,x in enumerate([i] * i)] 

Я должен смело признать свое поражение, но я заинтригован, как сделать это в 2 строки, и только один для цикла ...

2
smackenzie 26 Июн 2019 в 15:58

5 ответов

Лучший ответ

Согласно этому ответу он называется «сумма геометрической прогрессии»; после того, как вы немного погуглите, этот вид числа / последовательности, по-видимому, известен как один из видов последовательности Smarandache .

Вы можете попробовать это:

for i in range(1, int(input())):
    print(int(i * ((10**i) - 1) / 9))

Это сбивает с толку один вкладыш, но, похоже, работает.

3
Ralf 26 Июн 2019 в 13:30

Это приемлемо:

a = 9
print(*[str(i)*i for i in range(1, a)], sep='\n')

1
22
333
4444
55555
666666
7777777
88888888
0
zipa 26 Июн 2019 в 13:15

Это также будет приемлемым

for i in range(1, input()):
print(((10 ** i - 1) // 9) * i)
1
Isaiah 26 Июн 2019 в 13:33
for i in range(1, int(input('Number of iterations: '))):
    print(str(i)*i)

Пример вывода:

>>> for i in range(1, int(input('Number of iterations: '))):
        print(str(i)*i)

Number of iterations: 10
1
22
333
4444
55555
666666
7777777
88888888
999999999
1
Legorooj 26 Июн 2019 в 13:09
for i in range(1, int(input('Number of iterations: '))):
    print i * sum([pow(10, j) for j in range(i)])

Внутренний элемент for - это не цикл, это понимание списка.

0
memo 26 Июн 2019 в 13:21