我有代码来绘制一个填充的正方形:
for i in range(0,n):
print(n*"*")
哪些打印(显然取决于n的值):
****
****
****
****
一个填充的三角形:
for i in range(1,n+1):
print((n-(n-i)) * "*")
哪些打印(也取决于n):
*
**
***
****
但我不确定如何调整这些以画出这样的正方形:
****
* *
* *
****
或者像这样的三角形:
*
**
* *
* *
* *
* *
* *
********
这样每个丢失的星号都被一个空白字符(即一个空格)所取代 主要背景是无关紧要的。我只需要能够根据用户输入绘制这四个东西。
答案 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)
********
* *
* *
* *
* *
* *
* *
********