您好我想创建一些代码,打印一个看起来像这样的框
+ -- + -- + -- + -- + -- +
| | | | | |
+ -- + -- + -- + -- + -- +
代码应该使用一个循环来打印一行方框,使用范围内的i(5)(不应该使用IF语句来解决这个问题),只使用一个方框,如下所示
+ -- +
| |
+ -- +
我试图使用下面的代码但不生成所需的输出。请帮忙
for i in range(5):
print("+--+\n| |\n+--+", end=" ")
答案 0 :(得分:4)
您可以结合使用*
运算符创建字符串,join
在这些字符之间添加分隔符。
def printBoxes(boxes):
edges = ' -- '.join('+' * (boxes+1))
middle = ' '.join('|' * (boxes+1))
print(edges)
print(middle)
print(edges)
测试
>>> printBoxes(3)
+ -- + -- + -- +
| | | |
+ -- + -- + -- +
>>> printBoxes(5)
+ -- + -- + -- + -- + -- +
| | | | | |
+ -- + -- + -- + -- + -- +
答案 1 :(得分:2)
我认为老师希望你解决这个问题的方法是使用for
循环逐行构建三行,然后打印所有三行。或者,注意到顶部和底部是相同的,只需对每个使用相同的行:
edge, middle = '+', '|'
for i in range(5):
edge += ' -- +'
middle += ' |'
print(edge)
print(middle)
print(edge)
但是,使用*
字符串重复运算符和/或join
方法的答案更具Pythonic。如果你可以向你的老师解释他们的工作方式,以及为什么他们会更好,如果你的老师不是过于僵硬(或愚蠢),那么这可能是值得做的。即使你不想尝试这一点,了解他们为什么自己做得更好也许值得做。
答案 2 :(得分:0)
def printBoxes(n):
top = "+--" * n + "+"
middle = "| " * n + "|"
print(top)
print(middle)
print(top)
printBoxes(5)