J'essaie d'écrire un programme qui prend un mot ou une phrase en entrée, puis j'imprime la chaîne verticalement dans le terminal avec les lettres de la chaîne dans un style artistique ASCII personnalisé.

Voici ce que j'ai jusqu'à présent:

input_string = input('Please enter a word or phrase: ')
string = input_string.upper()

H = '''
||    || 
||    ||
||||||||
||    ||
||    ||
'''

I = '''
||||||||
   ||
   ||
   ||
||||||||
'''

letter_dict = {'H' : H, 'I' : I}

for letter in string:
    if letter in letter_dict:
        print(letter_dict(letter), sep='\n')

Je le teste actuellement avec les lettres «h» et «i» (je vais éventuellement créer un style personnalisé pour chaque lettre). J'essaie d'entrer `` salut '' en tant qu'entrée, puis il serait imprimé dans le terminal comme ceci:

||    || 
||    ||
||||||||
||    ||
||    ||

||||||||
   ||
   ||
   ||
||||||||

L'erreur que j'obtiens est «TypeError: l'objet« dict »n'est pas appelable». Je ne suis pas sûr des modifications à apporter à mon dictionnaire pour que mon code fonctionne.

Toute aide serait grandement appréciée! :)

0
Garrett 22 oct. 2020 à 06:34

2 réponses

Meilleure réponse

Les valeurs du dictionnaire sont accessibles à l'aide de square_braces (opérateur d'indexation). Vous devez utiliser letter_dict[letter].

TL / DR : si vous souhaitez que les lettres soient imprimées sur la même ligne. Vous pouvez utiliser le code suivant:

input_string = input('Please enter a word or phrase: ')
string = input_string.upper()

H = '''
||    || 
||    ||
||||||||
||    ||
||    ||
'''

I = '''
||||||||
   ||
   ||
   ||
||||||||
'''

letter_dict = {'H' : H, 'I' : I}

max_lines = lambda w: max([len(letter_dict[x].splitlines()) for x in w])
for i in range(max_lines(string)):
    for c in string:
        print(letter_dict[c].splitlines()[i], end=' ')
    print('')
0
Pax 22 oct. 2020 à 03:47

Vous utilisez des parenthèses pour accéder à un élément de dictionnaire. Vous devriez faire letter_dict[letter] au lieu de letter_dict(letter).

0
Nate 22 oct. 2020 à 03:40