绘制未填充的正方形& Python中的三角形

时间:2013-04-16 20:14:27

标签: python for-loop python-3.x

我有代码来绘制一个填充的正方形:

for i in range(0,n):
    print(n*"*")

哪些打印(显然取决于n的值):

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

一个填充的三角形:

for i in range(1,n+1):
    print((n-(n-i)) * "*")

哪些打印(也取决于n):

*
**
***
****

但我不确定如何调整这些以画出这样的正方形:

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

或者像这样的三角形:

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

这样每个丢失的星号都被一个空白字符(即一个空格)所取代 主要背景是无关紧要的。我只需要能够根据用户输入绘制这四个东西。

3 个答案:

答案 0 :(得分:3)

对于广场:

import sys

for i in range(n):
    for j in range(n):
        if i == 0 or j == 0 or i == n - 1 or j == n - 1:
            sys.stdout.write("*")
        else:
            sys.stdout.write(" ")
    print("")

n = 5的输出:

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

对于三角形:

import sys

for i in range(n):
    for j in range(i+1):
        if j == 0 or j == i or i == n - 1:
            sys.stdout.write("*")
        else:
            sys.stdout.write(" ")
    print("")

n = 5的输出:

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

请注意,我使用sys.stdout.write而不是print来避免额外的空格或换行符。

答案 1 :(得分:2)

这是三角形的解决方案,有点棘手,您可以自己弄清楚矩形。

>>> for i in range(0,n+2):
        if i in [0,n+1]:
                print (i+1)*"*"
        else:
                print("*" + (" "*(n-1-(n-i))) + "*")


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

答案 2 :(得分:1)

对于Triangle:

In [26]: def hollow_tri(n):
   ....:     print "*"
   ....:     for i in xrange(2,n):
   ....:         print "*{0}*".format(" "*(i-2))
   ....:     print "*"*n
   ....:     

In [27]: hollow_tri(8)
*
**
* *
*  *
*   *
*    *
*     *
********

In [28]: hollow_tri(4)
*
**
* *
****

对于Square:

In [29]: def hollow_square(n):
    print "*"*n
    for i in xrange(2,n):
        print "*{0}*".format(" "*(n-2))
    print "*"*n
   ....:     



In [30]: hollow_square(4)
****
*  *
*  *
****




In [31]: hollow_square(8)
********
*      *
*      *
*      *
*      *
*      *
*      *
********