python - 输入()后如何在python 3中居中文本?
问题描述
我真的无法在网上找到任何真正有帮助的东西,所以我想我会问自己。我有以下代码:
username = input()
username = username.capitalize()
print("Hello " + username ) # I want this to be centered
我希望打印语句以正在运行的任何控制台为中心。谢谢您的帮助!
解决方案
这有两个部分。
首先,您需要获取控制台宽度。你用shutil.get_terminal_size
.
由于并非总是可以获得控制台宽度——就此而言,甚至可能没有(例如,如果您的程序的标准输出被重定向到一个文件并且甚至没有终端),它将回退到 80 列(尽管您可以根据需要覆盖它):
cols, rows = shutil.get_terminal_size()
现在你只是center
那个宽度的字符串。字符串包含用户输入的事实并不重要。一旦你连接"Hello "
and username
,你就得到了一个str
与任何其他字符串对象一样工作的 a 。所以:
print(("Hello " + username).center(cols))
如果用户的输入可能太长而无法容纳在一行中,则需要先将其换行,然后将行居中。您可以使用该textwrap
模块:
for line in textwrap.wrap("Hello " + username, cols):
print(line.center(cols))
推荐阅读
- c# - c# 线程和任务的并发错误
- plot - 如何在 xmgrace 中添加顶部 x 轴?
- javascript - Blob 列表未在反应 js 组件中更新
- node.js - Heroku 没有运行 postinstall 或 heroku-postbuild 命令:
- javascript - 通过检查另一个带有对象的嵌套数组来过滤带有对象的嵌套数组 - JavaScript
- postgresql - Postgres 选择的工作速度比该选择快 3 倍
- javascript - 这个关键字和 addEventHandler 函数有问题
- gcc - 从源代码编译pytorch时如何知道选择哪个gcc版本?
- r - R POSIXlt 属性显示 IST 为 +6:30 而 IST 为 +5:30
- c# - 从 DataGridHyperlinkColumn 打开链接