我正在写一个python函数,我希望它能打印出一个形状。我被限制使用打印五次。如果我使用以下形状打印出来:
def shape():
print line1
print line2
print line3
print line4
print line5
然后通过乘以函数多次打印形状。但是,这会占用我所有分配的打印语句,我还需要创建另一个打印相同形状的函数,但缩进到右边的其他行。
所以我希望这个函数返回整个形状,以便稍后我可以使用print语句。但是,当然,如果我使用return而不是print,我只返回第1行,然后函数停止。有没有办法解决这个问题?使用元组对我没有帮助,因为我希望形状完好无损。
编辑:在写我的答案时,我不允许使用“/ n”或任何额外的引号。我得到了我可以使用的预设字符串。
答案 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
>>>
您可以添加许多变体,就像第二个参数指定缩进偶数行或奇数行一样 - 这将需要函数中的更多代码。