2014-09-18 131 views
3

我很困惑和沮丧,为什么我的程序没有执行它应该的方式。我正尝试在python ver 3上使用星号创建一个直角三角形。我使用了教科书中的确切代码,并将其作为一条直线出现。请赐教。使用Python创建一个直角三角形

例如

size = 7 

for row in range (size): 
    for col in range (row + 1): 
     print('*', end='') 
     print() 

导致

* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 

所有在一列

回答

7

在Python,压痕计数。最后的print应与第二个for对齐。

size = 7 

for row in range (size): 
    for col in range (row + 1): 
     print('*', end='') 
    print() 

结果:

* 
** 
*** 
**** 
***** 
****** 
******* 

print功能实际上意味着 “移动到新线”。如果两个print语句都以相同的缩进级别出现,则每次打印星号时,都会移至下一行。如果第二个printfor循环,你只会得到7个换行符。

+0

哇谢谢我一直在处理这个同样的问题像一个一个半小时。 – 2014-09-18 19:43:23

1

作为替代方案,您可以使用一个for循环!

>>> s='' 
>>> for i in range(7): 
... s+='*' 
... print (s) 
... 
* 
** 
*** 
**** 
***** 
****** 
******* 
+0

是的,虽然'print'需要括号,如果我们使用Python 3.X. – Kevin 2014-09-18 19:54:13

+0

是的,谢谢提醒! – Kasramvd 2014-09-18 19:55:27

1

它可能不是最可读的解决方案,但如果你看中oneliners这是做这件事的一种方法:

print "\n".join(["".join(["*" for col in range(row+1)]) for row in range(7)]) 

编辑

只是为了使它更短:

print "\n".join(["*" * (row+1) for row in range(7)])