如何用python打印消息框?
我试图在python中创建的框中打印消息,但它不是直接向下打印,而是水平打印如何用python打印消息框?,python,string,Python,String,我试图在python中创建的框中打印消息,但它不是直接向下打印,而是水平打印 def border_msg(msg): row = len(msg) columns = len(msg[0]) h = ''.join(['+'] + ['-' *columns] + ['+']) result = [h] + ["|%s|" % row for row in msg] + [h] return result 预期结果 但是得到 当您使用列表理解时,您得到
def border_msg(msg):
row = len(msg)
columns = len(msg[0])
h = ''.join(['+'] + ['-' *columns] + ['+'])
result = [h] + ["|%s|" % row for row in msg] + [h]
return result
预期结果
但是得到
当您使用列表理解时,您得到的输出为列表,正如您的输出所示, 要查看新行字符,需要打印结果 而且您还使用列进行乘法,这对于所有字符串来说都是一个。 将其更改为“行”
def border_msg(msg):
row = len(msg)
h = ''.join(['+'] + ['-' *row] + ['+'])
result= h + '\n'"|"+msg+"|"'\n' + h
print(result)
输出
当您使用列表理解时,您得到的输出为列表,正如您的输出所示, 要查看新行字符,需要打印结果 而且您还使用列进行乘法,这对于所有字符串来说都是一个。 将其更改为“行”
def border_msg(msg):
row = len(msg)
h = ''.join(['+'] + ['-' *row] + ['+'])
result= h + '\n'"|"+msg+"|"'\n' + h
print(result)
输出
如果您只想打印一行,上述答案是好的,但是,它们会分解为多行。如果要打印多行,可以使用以下命令:
def border_msg(msg):
l_padding = 2
r_padding = 4
msg_list = msg.split('\n')
h_len = max([len(m) for m in msg]) + sum(l_padding, r_padding)
top_bottom = ''.join(['+'] + ['-' * h_len] + ['+'])
result = top_bottom
for m in msg_list:
spaces = h_len - len(m)
l_spaces = ' ' * l_padding
r_spaces = ' ' * (spaces - l_padding)
result += '\n' + '|' + l_spaces + m + r_spaces + '|\n'
result += top_bottom
return result
这将围绕多行字符串打印一个框,该字符串与确定文本在框中位置的指定填充值左对齐。相应地调整
如果您想将文本居中,只需使用一个填充值,并在管道之间交错空格=h_len-lenm行中的空格值的一半。如果您只想打印一行,上述答案很好,但是,它们会分解为多行。如果要打印多行,可以使用以下命令:
def border_msg(msg):
l_padding = 2
r_padding = 4
msg_list = msg.split('\n')
h_len = max([len(m) for m in msg]) + sum(l_padding, r_padding)
top_bottom = ''.join(['+'] + ['-' * h_len] + ['+'])
result = top_bottom
for m in msg_list:
spaces = h_len - len(m)
l_spaces = ' ' * l_padding
r_spaces = ' ' * (spaces - l_padding)
result += '\n' + '|' + l_spaces + m + r_spaces + '|\n'
result += top_bottom
return result
这将围绕多行字符串打印一个框,该字符串与确定文本在框中位置的指定填充值左对齐。相应地调整
如果您想将文本居中,只需使用一个填充值,并在管道之间的空格=h_len-lenm行中插入空格值的一半。这里有一个精心设计的函数,用于打印带有可选标题和缩进的消息框,该选项和缩进以最长的行为中心:
def print_msg_box(msg, indent=1, width=None, title=None):
"""Print message-box with optional title."""
lines = msg.split('\n')
space = " " * indent
if not width:
width = max(map(len, lines))
box = f'╔{"═" * (width + indent * 2)}╗\n' # upper_border
if title:
box += f'║{space}{title:<{width}}{space}║\n' # title
box += f'║{space}{"-" * len(title):<{width}}{space}║\n' # underscore
box += ''.join([f'║{space}{line:<{width}}{space}║\n' for line in lines])
box += f'╚{"═" * (width + indent * 2)}╝' # lower_border
print(box)
╔════════════╗
║ ║
║ ~ 蟒蛇~║
║ ║
╚════════════╝
打印消息框'\n~ PYTHON~\n',缩进=10
╔══════════════════════════════╗
║ ║
║ ~ 蟒蛇~║
║ ║
╚══════════════════════════════╝
打印消息框'\n~ PYTHON~\n',缩进=10,宽度=20
╔════════════════════════════════════════╗
║ ║
║ ~ 蟒蛇~║
║ ║
╚════════════════════════════════════════╝
msg=我心里想,\n\
“一点腐乳就可以了”\n\
所以,我缩减了我的沃尔波利活动,冲出去了,\n\
并潜入你的授权地进行谈判\n\
出售一些俗气的商品!
print_msg_boxmsg=msg,indent=2,title='简而言之:'
╔══════════════════════════════════════════════════════════╗
║ 简言之:║
║ ------- ║
║ 我心里想,║
║ '一点腐乳就可以了,║
║ 所以,我减少了我的沃尔波利活动,冲出去,║
║ 潜入你的职权范围进行谈判║
║ 出售一些俗气的商品!║
╚══════════════════════════════════════════════════════════╝
下面是一个经过精心设计的功能,用于打印带有可选标题和缩进的消息框,缩进以最长的行为中心:
def print_msg_box(msg, indent=1, width=None, title=None):
"""Print message-box with optional title."""
lines = msg.split('\n')
space = " " * indent
if not width:
width = max(map(len, lines))
box = f'╔{"═" * (width + indent * 2)}╗\n' # upper_border
if title:
box += f'║{space}{title:<{width}}{space}║\n' # title
box += f'║{space}{"-" * len(title):<{width}}{space}║\n' # underscore
box += ''.join([f'║{space}{line:<{width}}{space}║\n' for line in lines])
box += f'╚{"═" * (width + indent * 2)}╝' # lower_border
print(box)
╔════════════╗
║ ║
║ ~ 蟒蛇~║
║ ║
╚════════════╝
打印消息框'\n~ PYTHON~\n',缩进=10
╔══════════════════════════════╗
║ ║
║ ~ 蟒蛇~║
║ ║
╚══════════════════════════════╝
打印消息框'\n~ PYTHON~\n',缩进=10,宽度=20
╔════════════════════════════════════════╗
║ ║
║ ~ 蟒蛇~║
║ ║
╚══════════?
print_msg_box('\n~ PYTHON ~\n')