Python - 返回没有元组的多行代码

时间:2015-02-08 16:46:15

标签: python printing return

我正在写一个python函数,我希望它能打印出一个形状。我被限制使用打印五次。如果我使用以下形状打印出来:

def shape():
     print line1
     print line2
     print line3
     print line4
     print line5

然后通过乘以函数多次打印形状。但是,这会占用我所有分配的打印语句,我还需要创建另一个打印相同形状的函数,但缩进到右边的其他行。

所以我希望这个函数返回整个形状,以便稍后我可以使用print语句。但是,当然,如果我使用return而不是print,我只返回第1行,然后函数停止。有没有办法解决这个问题?使用元组对我没有帮助,因为我希望形状完好无损。

编辑:在写我的答案时,我不允许使用“/ n”或任何额外的引号。我得到了我可以使用的预设字符串。

3 个答案:

答案 0 :(得分:0)

假设行在列表或元组等中。在行所在的容器的任何地方使用join。

def shape():
     return "\n".join(line1,line2,line3,line4,line5)

或者只返回所有行并在函数上使用join:

def shape():
     return lines

print("\n".join(shape()))

五行return lines[:5]

您可以在任何可迭代使用连接:

def shape():
      return "\n".join(line1,line2,line3,line4,line5)

不使用\n只使用单个打印迭代函数:

def shape():
     return lines

for line in shape():
  print(line) 

答案 1 :(得分:0)

您可以从函数返回多个变量:

def shape():
     return line1, line2, line3, line4, line5

以相同的方式阅读它们:

line1, line2, line3, line4, line5 = shape()

这意味着如果你愿意,你可以创建一个“漂亮的打印”功能,读取从shape()返回的变量,并在每行中添加标签/换行符/你想要的任何内容 - 而不会弄乱你的数据:

def pretty_print_lines():
    for line in shape():
        print line

答案 2 :(得分:0)

限制对问题规范的回答:您可以在函数中使用format string并添加indent参数。

def shape(indent = 0):
    indent = ' ' * indent
    print '{}'.format('ab')
    print '{}{}'.format(indent, 'cd')
    print '{}'.format('ef')
    print '{}{}'.format(indent, 'gh')
    print '{}'.format('jk')

def indent5():
    shape(5)

用法:

>>> shape()
ab
cd
ef
gh
jk
>>> indent5()
ab
     cd
ef
     gh
jk
>>>

您可以添加许多变体,就像第二个参数指定缩进偶数行或奇数行一样 - 这将需要函数中的更多代码。