我想打印一种图案:(仅1,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()
这就是我现在得到的
答案 0 :(得分:0)
您快到了。您可以打印0
和j
的交替图案,而不必打印1
,而是可以根据0
的值打印内容。在这种情况下,j % 2
在第二个for循环中向后迭代时起作用。
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()
答案 1 :(得分:0)
除了Slider的解决方案外,其他实现方式如下:这里的想法是首先在开头生成最大的字符串,然后使用切片打印单独的行。这只是一个替代解决方案。
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
答案 2 :(得分:0)
基于@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:]))
答案 3 :(得分:0)
使用itertools.cycle
可以仅在偶数行上将next()
与附加的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