1

In my python program I defined a dictionary.

And assigned big block letters made with # symbols to it.

I need to display letters horizontally like this

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

My Code is supposed to take an input and print the big letters corresponding the input if input is abc so output should be like above.

Code

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='     ')
ghost21blade
  • 731
  • 2
  • 8
  • 21
  • each letter already has line breaks, so it will never print horizontally. You need to process the whole string one line at a time. – tromgy Dec 10 '21 at 12:24

2 Answers2

1

Store your letters in 2D array of char. Then merge all letters, you'll get one 2D array. Then print row by row your 2D array.

LittlePanic404
  • 130
  • 1
  • 1
  • 7
1

Store the chars in lists like this:

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

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

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

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

Then use this function to combine the chars in 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:

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

The second argument in combineChars(chars, spacing) is used for the spacing inbetween the chars.

There is also a short, but complicated form:

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