Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何用python打印消息框?_Python_String - Fatal编程技术网

如何用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 预期结果 但是得到 当您使用列表理解时,您得到

我试图在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)
    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')