【问题标题】:trying to print ascii text in same line python 3.7试图在同一行 python 3.7 中打印 ascii 文本
【发布时间】:2019-12-06 10:12:23
【问题描述】:

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

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

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



print(letter_I + letter_o)

我希望输入是

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

但我明白了

 ###
  #
  #
  #
 ###


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

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

【问题讨论】:

  • 它更复杂。它需要迭代和/或更复杂的数据结构而不是简单的多行字符串。

标签: python python-3.7


【解决方案1】:

使用此功能

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)

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      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)),但这会让您对间距的控制较少。)

      输出:

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

      【讨论】:

        【解决方案4】:

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

        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])
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-12-01
          • 2019-03-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-12-29
          相关资源
          最近更新 更多