2016-07-31 891 views
2

我想实现这个如何使用python循环创建数字的三角形?

0 1 2 3 4 5 6 7 8 9 
    0 1 2 3 4 5 6 7 8 
    0 1 2 3 4 5 6 7 
     0 1 2 3 4 5 6 
     0 1 2 3 4 5 
      0 1 2 3 4 
      0 1 2 3 
       0 1 2 
       0 1 
        0 

而且我越来越接近,但现在我卡住了。这里是我当前的代码

def triangle(): 
    n = 9 
    numList = [0,1,2,3,4,5,6,7,8,9] 
    for i in range(10): 
     for i in numList: 
      print(i, end=" ") 
     print() 
     numList[n] = 0 
     n -= 1 
triangle() 

这是电流输出

0 1 2 3 4 5 6 7 8 9 
0 1 2 3 4 5 6 7 8 0 
0 1 2 3 4 5 6 7 0 0 
0 1 2 3 4 5 6 0 0 0 
0 1 2 3 4 5 0 0 0 0 
0 1 2 3 4 0 0 0 0 0 
0 1 2 3 0 0 0 0 0 0 
0 1 2 0 0 0 0 0 0 0 
0 1 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 

所以我有一个四围的方式,但,它的倒退,而且是0的代替空格

+0

对于初学者来说,你能不能找出多余的'0'来自哪里并且做些什么?例如'numList [n] = 0' - >'numList.pop()'。 – kaylum

+0

对不起kaylum,我还在学习基础知识,并完全忘记了.pop()函数,这会让它变得容易很多,现在我可以弄清楚如何'反转' – oneman

回答

1

有趣的益智,你可以试试这个:

n = range(0,10) #set your range 
while len(n)<20: #loop until it exhausts where you want it too 
    print ''.join(str(e) for e in n[0:10]) #print as a string! 
    n = [' ']+n  #prepend blank spaces 

here is an example

您可以将相同的逻辑应用于您的尝试。基本上,我在每个循环之后在N的开始处添加一个空格,然后仅打印前十个元素。我打印列表的方式有点笨拙,因为我正在加入,我需要将每个元素更改为一个字符串。

+0

按预期工作,谢谢帮帮我 – oneman

2

你可以试试这个代码:

def triangle(): 
    for i in range(10): 
     print i * " ", 
     for j in range(10 - i): 
      print j, 
     print  

triangle() 

的代码几乎是自我解释。

在线例子是here

0

其他解决方案都很好,但生活变得与numpyarange和重载*操作字符串更容易一些。 Python的内置功能非常强大。

for i in range(11): 
    print ' ' * i + ''.join(str(elt) for elt in np.arange(10 - i))