【发布时间】:2017-02-19 08:30:12
【问题描述】:
我正在处理这个我无法弄清楚的 Python 任务。它是 3 个功能中的最后一个,前 2 个比这个更容易编程。指令是 “给定一条可能包含多行的消息,利用 split() 函数来识别各个行,并使用 format() 函数,以便在打印时,它会在消息的行周围绘制一个框,所有行都居中。框使用垂直条 &两侧的破折号(|,-),角上的+(+),并且在消息的最宽行的左侧和右侧始终有一列空格。”
这个函数需要做什么的一些例子:
测试:border_msg('a') == '+---+\n|一个 |\n+---+\n'
测试:border_msg('hello') == '+-------+\n|你好|\n+--------+\n'
测试一下:border_msg("嗨!\n你好吗?\n安全驾驶!") == '+---------------+\n|你好! |\n|你好吗? |\n|安全驾驶! |\n+---------------+\n'
我认为需要打印上面的测试,以便中间的单词被顶部和底部的“+------+”和侧面的“|”包围。
这是我到目前为止的代码。我不确定我会从这里去哪里。
def border_msg(msg):
border_msg.split("\n")
'%s'.format(msg)
return border_msg(msg)
print border_msg(msg)
【问题讨论】:
-
修复缩进。那么无限递归呢?
-
刚刚修复了缩进,如果您要返回然后打印,我只是不确定要使用哪一个,我想两者都可以工作
-
famguy74:@Jean-François Fabre 正在谈论您的
border_msg()函数无条件调用自身(因此永远不会返回)这一事实。 -
也许只有我一个人,但我看不出递归在这种情况下有什么帮助——正如其他人提到的,你的代码不会终止,这是一个问题,一方面。当有一些嵌套的意义时,递归是有帮助的。例如,如果我们需要在消息周围制作多个相同的墙。
标签: python drawing message rectangles