我正在用python编写一个非常小且基本的基于文本的冒险游戏,并且我希望能够对齐我的标题(以ASCII格式) 我已经看过了,但我要么听不懂,要么就没用。
这是ASCII:
________ ___
/_ __/ /_ ___ / | ________ ____ ____ _
/ / / __ \/ _ \ / /| | / ___/ _ \/ __ \/ __ `/
/ / / / / / __/ / ___ |/ / / __/ / / / /_/ /
/_/ /_/ /_/\___/ /_/ |_/_/ \___/_/ /_/\__,_/
(我知道这不是很有创意)
我想让它与中心对齐,这可能吗?
答案 0 :(得分:3)
您可以使用str.center
方法。下面的代码假定屏幕宽度为80个字符:
s = ''' ________ ___
/_ __/ /_ ___ / | ________ ____ ____ _
/ / / __ \/ _ \ / /| | / ___/ _ \/ __ \/ __ `/
/ / / / / / __/ / ___ |/ / / __/ / / / /_/ /
/_/ /_/ /_/\___/ /_/ |_/_/ \___/_/ /_/\__,_/ '''
print('\n'.join(l.center(80) for l in s.splitlines()))
这将输出:
________ ___
/_ __/ /_ ___ / | ________ ____ ____ _
/ / / __ \/ _ \ / /| | / ___/ _ \/ __ \/ __ `/
/ / / / / / __/ / ___ |/ / / __/ / / / /_/ /
/_/ /_/ /_/\___/ /_/ |_/_/ \___/_/ /_/\__,_/
答案 1 :(得分:1)
我会
获取终端窗口的大小(主要是列)-linux命令:“ stty -a” ,Windows命令:“ mode con” -并进行解析cli输出,或像下面这样:How to get Linux console window width in Python
获取文本的最大大小(需要最多列的行)
编辑
这是一个示例(在Linux和Windows下均可工作):
<div class="checkbox-wrapper">
<label for="gr_1_option_4">
<input type="radio" id="gr_1_option_4" name="group1" value="">
Sonstiges:
<input type="text" id="gr_1_option_4" name="group1"/>
</label>
</div>
输出:
import shutil
import math
def str_repeat(string, length):
return (string * (int(length / len(string)) + 1))[:length]
def print_center(lines_out):
columns, rows = shutil.get_terminal_size()
max_line_size = 0
left_padding = 0
for line in lines_out:
if max_line_size == 0 or max_line_size < len(line):
max_line_size = len(line)
if columns > max_line_size:
left_padding = math.floor((columns - max_line_size) / 2)
if left_padding > 0:
for line in lines_out:
print(str_repeat(' ', left_padding) + line)
lines = [
' ________ ___',
' /_ __/ /_ ___ / | ________ ____ ____ _',
' / / / __ \/ _ \ / /| | / ___/ _ \/ __ \/ __ `/',
' / / / / / / __/ / ___ |/ / / __/ / / / /_/ /',
'/_/ /_/ /_/\___/ /_/ |_/_/ \___/_/ /_/\__,_/'
]
print_center(lines)
答案 2 :(得分:1)
您可以逐行添加文本居中所需的空白数量。
这是一种方法,您必须提供要居中的文本以及可用的宽度:
def align_center(text, width):
lext = text.split('\n')
for line in lext:
assert len(line) < width, 'insufficient width'
max_w = max(len(line) for line in lext)
res = []
for line in lext:
res.append(' ' * ((width - max_w) // 2))
res.append(line)
res.append('\n')
return ''.join(res)
text = """ ________ ___
/_ __/ /_ ___ / | ________ ____ ____ _
/ / / __ \/ _ \ / /| | / ___/ _ \/ __ \/ __ `/
/ / / / / / __/ / ___ |/ / / __/ / / / /_/ /
/_/ /_/ /_/\___/ /_/ |_/_/ \___/_/ /_/\__,_/ """
centered = align_center(text, 90)
print(centered)
________ ___
/_ __/ /_ ___ / | ________ ____ ____ _
/ / / __ \/ _ \ / /| | / ___/ _ \/ __ \/ __ `/
/ / / / / / __/ / ___ |/ / / __/ / / / /_/ /
/_/ /_/ /_/\___/ /_/ |_/_/ \___/_/ /_/\__,_/
答案 3 :(得分:0)
不要自己输入ASCII艺术作品-使用text2art:
from art import *
text2art("The Arena")
替代方法是:
from art import *
tprint("The Arena")
要对此进行居中,请执行以下操作:
from art import *
string="The Arena"
new_string = string.center(90)
tprint(new_string)
或(改用text2art
):
text2art(new_string)