尝试在python3.7的同一行中打印ascii文本

2024-05-23 22:33:55 发布

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

我试图写一个程序,以一个字母作为输入,并打印出相应的ascii艺术字母。我试图做一个print()语句,但它打印在不同的行,而不是我想要的同一行。你知道吗

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

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



print(letter_I + letter_o)

我希望输入是

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

但我明白了

 ###
  #
  #
  #
 ###


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

如何获得首选输出,是否可以镜像打印而不弄乱字母?你知道吗


Tags: 程序镜像字母ascii语句艺术printletter
3条回答

使用此功能

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),但是在这个用例中,我认为这将是相当痛苦的。相反,试着用“像素”行来写文本,所以首先打印每个字符中最上面的“像素”,然后跳到下一行。为此,你当然需要提前知道全文。 另一方面,当然有一个lib,看看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)),但这样就减少了对间距的控制。)

输出:

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

相关问题 更多 >