Я хотел бы напечатать шаблон, например: (только 1,0)
10101 0101 101 01 0
10101
0101
101
01
0
Когда пользователь вводит 5
m= int(input()) n=m+1 for i in range(0,n): for j in range(0,n-i): print(0,end=" ") print()
Это то, что я получил прямо сейчас
Используя itertools.cycle, вы можете просто использовать next() с дополнительными next() на четных линиях
itertools.cycle
next()
from itertools import cycle m = int(input('Enter number: ')) s = cycle('10') for i in range(m+1)[::-1]: for j in range(i): print(next(s), end="") print() if not i % 2: next(s) 10101 0101 101 01 1
В дополнение к решению слайдера, существует другой способ сделать это следующим образом: Идея здесь состоит в том, чтобы сначала сгенерировать самую большую строку в начале, а затем использовать нарезку для печати отдельных строк.Это просто альтернативное решение.
m= int(input()) string = [1 if i%2 == 0 else 0 for i in range(m)] for i in range(m): for j in string[i:]: print (j, end=' ') print () 5 1 0 1 0 1 0 1 0 1 1 0 1 0 1 1
Опираясь на сообщение @Bazingaa, вы также можете создать альтернативу, для которой нужен только один цикл for:
nro_lvls = int(input('Number of levels? ')) longest = ['1' if i%2 == 0 else '0' for i in range(nro_lvls)] for i in range(nro_lvls): print(''.join(longest[i:]))
Ты почти у цели.Вместо того, чтобы печатать 0, вы можете напечатать что-нибудь, основываясь на значении j, потому что вам нужен чередующийся шаблон 1 и 0.В этом случае j % 2 работает при повторной итерации во втором цикле for.
j
1
j % 2
n = int(input("Levels? ")) for i in range(0, n): for j in range(n - i, 0, -1): # go backwards print(j % 2, end=" ") # print j% 2 instead of 0 print()