如何在python3中的文本在input()之后居中?

2024-04-19 22:12:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我在网上找不到真正有用的东西,所以我想问问自己。我有以下代码:

username = input()
username = username.capitalize()
print("Hello " + username ) # I want this to be centered 

我希望print语句集中在运行它的任何控制台上。谢谢你的帮助!在


Tags: to代码helloinputusername语句bethis
2条回答

您可以使用os.get_terminal_size().columns来获取终端中的列数,然后打印必要的空格以使文本居中:

import os
def print_centre(s):
    print(' ' * ((os.get_terminal_size().columns - len(s))//2) + s)

{a1}


一些改进(如abarner指出的):

  1. shutil.get_terminal_sizeos.get_terminal_size更可靠。在
  2. 您可以使用s.center(...)来提高可读性。在

这提供了一个更简洁的解决方案:

^{pr2}$

这有两个部分。在


你需要先得到控制台的宽度。你用^{}来做这个。在

由于不可能总是获得控制台宽度,因此可能连都没有一个(例如,如果程序的标准输出被重定向到一个文件,甚至没有终端),它将回落到80列(尽管您可以根据需要覆盖它):

cols, rows = shutil.get_terminal_size()

现在你只要^{}这个宽度的字符串。字符串包含用户输入并不重要。一旦连接了"Hello "username,就得到了一个与任何其他字符串对象工作方式相同的str。所以:

^{pr2}$

如果用户的输入可能太长而无法容纳在一行中,则需要先将其换行,然后将行居中。您可以使用^{}模块:

for line in textwrap.wrap("Hello " + username, cols):
    print(line.center(cols))

相关问题 更多 >