尝试在同一行 Python 3.7 中打印 ASCII 文本



我试图编写一个程序,该程序将字母作为输入,并在ascii艺术中打印相应的字母。我尝试做一个 print(( 语句,但它打印在单独的行中,而不是我想要的同一行。

letter_I = """
###
#
#
#
###
"""
letter_o = """
###
#   #
#   #
#   #
###
"""

print(letter_I + letter_o)

我希望输入是

###       ###
#       #   #
#       #   #
#       #   #
###       ###

但我得到

###
#
#
#
###

###
#   #
#   #
#   #
###

如何获得首选输出,是否可以在不弄乱字母的情况下镜像打印它?

使用此函数

def combineStr(str1, str2):
l1 = str1.split('n')
l2 = str2.split('n')
for i in range(min(len(l1), len(l2))):
print(l1[i]+'t'+l2[i]);

所以你可以这样做:

combineStr(letter_I, letter_o)

一方面,您可以使用ANSI终端转义序列(例如:https://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/x361.html(,但在此用例中,我认为这将是相当痛苦的。相反,尝试按"像素"行编写文本,因此首先打印每个字符中最高的"像素",然后跳转到下一行。为此,您当然需要提前了解全文。 另一方面,当然有一个库,看看 https://github.com/pwaller/pyfiglet

您必须将字母分成单独的行,并在打印下一行之前打印所有字母的一行。

letters = [letter_I, letter_o]
for lines in zip(*map(str.splitlines, letters)):
print(*(line.ljust(5) for line in lines))

在这里,mapsplitlines方法应用于每个字母,然后zip以正确的方式排列它们。ljust在打印之前使所有行的宽度相同。(或者,您可以只print("t".join(lines))但这会使您对间距的控制较少。

输出:

###   ### 
#   #   #
#   #   #
#   #   #
###   ### 

您可以通过逐行拆分每个字符串并打印每行后跟固定数量的空格来手动执行此操作。

letter_I = """
###
#
#
#
###
"""
letter_o = """
###
#   #
#   #
#   #
###
"""
letter_I = letter_I.split("n")
letter_o = letter_o.split("n")
for i in range(len(letter_I)):
print(letter_I[i].ljust(7), letter_o[i])

最新更新