水平打印多行文本

Print multiline text horizontally

在我的 python 程序中,我定义了一个字典。

并为其分配了用 # 符号组成的大正楷。

我需要像这样水平显示字母

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

我的代码应该接受输入并打印与输入对应的大字母 如果输入是 abc 那么输出应该像上面那样。

代码

dic ={}

dic['A'] = '''
  #  
 # # 
#####
#   #
#   #'''
dic['B'] = '''
###  
#  # 
###  
#  # 
###  '''
dic['C'] = '''
  ### 
 #   
#    
 #   
  ###'''

word = input('Input : ').upper()

for i in word :
    s = dic[i].split('\n')
    print(s[0],end='     ')
print('')
for j in word :
    print(s[1],end='     ')
print('')
for k in word :
    print(s[2],end='     ')
print('')
for m in word :
    print(s[3],end='     ')
print('')
for n in word :
    print(s[4],end='     ')

将您的字母存储在二维字符数组中。 然后合并所有的字母,你会得到一个二维数组。 然后逐行打印二维数组。

将字符存储在这样的列表中:

chars = {}
chars['A'] = ['  #  ',
              ' # # ',
              '#####',
              '#   #',
              '#   #']

chars['B'] = ['### ',
              '#  #',
              '### ',
              '#  #',
              '### ']

chars['C'] = ['  ###',
              ' #   ',
              '#    ',
              ' #   ',
              '  ###']

word = input('Input : ').upper()
word_chars = [chars[i] for i in word]

然后用这个函数把word_chars中的字符组合起来:

def combineChars(chars: list[list[str]], spacing: str):
    lines = []
    for line_i in range(max([len(x) for x in chars])):
        line = []
        for char in chars:
            if len(char) > line_i:
                line.append(char[line_i])
        lines.append(spacing.join(line))
    return '\n'.join(lines)


print(combineChars(word_chars, '  '))  # in this case the chars
                                       # are 2 spaces apart 
#output:

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

combineChars(chars, spacing) 中的第二个参数用于字符之间的间距。

还有一个简短但复杂的形式:

def combineChars(chars: list[list], spacing: str):
    return '\n'.join([spacing.join([char[line_i] for char in chars if len(char) > line_i]) for line_i in range(max([len(x) for x in chars]))])