首页 > 解决方案 > python中的矩形框模式

问题描述

我编写了一个程序来在 python 中打印一个矩形框图案。但是,最后一个字符跳到了第一行的右侧。代码注释中提到了所需的输出和实际生成的输出。我的代码有什么问题?

for i in range(10):
    print("x",end="")

for j in range(2):
    print("x"+" "*9+"x")

for k in range(10):
    print("x",end="")

#desired output:       xxxxxxxxxxx            my output:   xxxxxxxxxxx        x
#                      x         x                         x         x
#                      x         x                         x         x
#                      xxxxxxxxxxx                         xxxxxxxxxx


input()

标签: python-3.x

解决方案


发生这种情况是因为第一个循环中最后x打印出来的for内容没有打印换行符(由于end="")。

如果你想要你想要的输出,你需要在第一个for循环之后打印一个换行符(通过调用print()),你还需要将range第一个和最后一个for循环的 11 更改为 11。

for i in range(11):
    print("x",end="")

print()

for j in range(2):
    print("x"+" "*9+"x")

for k in range(11):
    print("x",end="")

输出:

xxxxxxxxxxx
x         x
x         x
xxxxxxxxxxx

另外,这种更通用的方法怎么样:

WIDTH = 11
HEIGHT = 4

for i in range(WIDTH):
    print("x", end="")

print()

for j in range(HEIGHT - 2):
    print("x" + " "*(WIDTH - 2) + "x")

for k in range(WIDTH):
    print("x", end="")

它不考虑小尺寸,但它比以前更灵活。


推荐阅读