使用while循环Python创建形状

时间:2013-04-19 02:55:35

标签: python-3.x while-loop shape

我想要做的是使用while循环从星号中创建一个正方形,下面的代码将打印填充的正方形,但我想要它做的是打印未填充的正方形

a='square'
b='unfilled'
c=4
num=0
asterix='*'
while a=='square' and b=='unfilled' and int(num)<int(c):
    num+=1
    print(asterix*int(c))

代码的作用:

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

我想要代码做什么:

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

非常感谢任何帮助

2 个答案:

答案 0 :(得分:1)

    n = 4
    s = "*"
    for i in range(0,n,1):
        if i == 0 or i == n-1:
            print(s*n)
        else:
            print(s+(" "*(n-2))+s)

这应该做你想做的事。您不必将所有内容都转换正确。

答案 1 :(得分:1)

我知道很久以前就已经回答了这个问题,但我也正在进行一些早期的课堂练习,并尝试使用我在学习过程中学到的一些新东西。

这让我想起了很多练习,最后我回答了类似于上面的答案。从那时起,我发现了一种使用生成器编写它的好方法:

n = 4
table = ("*  *" if i not in [0, n] else '****' for i in range(n+1))
for row in table: print(row)

您可能也希望对此进行概括,以使其适用于可变大小n