在python中迭代

时间:2014-11-18 20:27:47

标签: python

您好我想创建一些代码,打印一个看起来像这样的框

 + -- + -- + -- + -- + -- +
 |    |    |    |    |    |
 + -- + -- + -- + -- + -- +

代码应该使用一个循环来打印一行方框,使用范围内的i(5)(不应该使用IF语句来解决这个问题),只使用一个方框,如下所示

+ -- +
|    |
+ -- +

我试图使用下面的代码但不生成所需的输出。请帮忙

for i in range(5):
    print("+--+\n|  |\n+--+", end=" ")

3 个答案:

答案 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)