(Python)如何使用for循环打印具有特定数字的三角形?

时间:2018-10-15 15:15:54

标签: python for-loop

我想打印一种图案:(仅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()

这就是我现在得到的

4 个答案:

答案 0 :(得分:0)

您快到了。您可以打印0j的交替图案,而不必打印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