Vorweg will ich erst mal klären, dass ich Programmieranfänger bin und mich mit dem script vielleicht ein bisschen übernommen habe. Nichts desto trotz möchte ich das gerne zuende bringen.
Ich will ein Programm erstellen, welches die einstellige Namenszahl eines eingegebenen Namens ermitteln soll.
Bis jetzt sieht das Programm folgendermaßen aus:
#Zahlenwertzuweisung Buchstaben:
#Erstellen eines Wörterbuchs Variablen (Dictionairy_Variablen):
Dict_Var = {'A':1,'a':1,'Ä':6,'ä':6,'B':2,'b':2,'C':3,'c':3,'D':4,
'd':4,'E':5,'e':5,'F':8,'f':8,'G':3,'g':3,'H':5,'h':5,
'I':1,'i':1,'J':1,'j':1,'K':2,'k':2,'L':3,'l':3,'M':4,
'm':4,'N':5,'n':5,'O':7,'o':7,'P':8,'p':8,'Q':1,'q':1,
'R':2,'r':2,'S':3,'s':3,'T':4,'t':4,'U':6,'u':6,'V':6,
'W':6,'w':6,'X':5,'x':5,'Y':1,'y':1,'Z':7,'z':7,'Ü':2,
'ü':2,'Ö':3,'ö':3}
#Eingabe Namen und Umwandlung in Liste:
print("Willkommen zur Berechnung und Deutung der Namenszahl")
name = input("Name eingeben: ")
print("Der Name lautet " + name)
liste = list(name)
print (liste)
#Den Buchstaben in Liste die variablen Zahlenwerte zuweisen:
for liste in Dict_Var.values():
print("Zahlenliste" + (liste))
---->daraus wird nach Ausführung:
Willkommen zur Berechnung und Deutung der Namenszahl
Name eingeben: Harald
Der Name lautet Harald
['H', 'a', 'r', 'a', 'l', 'd']
Traceback (most recent call last):
File "C:\Users\blah blah\Python\Namenszahl.py", line 24, in <module>
print("Zahlenliste" + (liste))
TypeError: can only concatenate str (not "int") to str
Process finished with exit code 1
Wie ihr sehen könnt erscheint da NICHT:
Willkommen zur Berechnung und Deutung der Namenszahl
Name eingeben: Harald
Der Name lautet Harald
['H', 'a', 'r', 'a', 'l', 'd']
[5,1,2,1,3,4] #(das sind die Werte der Variablen aus dem Dictionairy)
Diese Zahlenliste bräuchte ich, um in einem weiteren Schritt über eine while-schleife so lange Quersummen zu bilden, bis eine einstellige Zahl übrigbleibt, welche dann die gesuchte Namenszahl darstellt.
wie müssen nun also die Befehle aussehen, damit ich zu meiner Liste mit den Variablen komme, um dann weiter machen zu können?
lg,
PanTau
strings in Liste Zahlenwerte aus Dictionairy zuordnen
@PanTau,
da treten gleich mehrere Fehler auf einmal auf:
Vorher weiter oben hattest du in "liste" die Buchstaben des Namens als Liste gespeichet.
Mit dieser For-Schleife überschreibst du die aber wieder.
Und zwar mit der ersten Zahl aus dem Dictionary Dict_Var. Jetzt versuchst du mit
die Zahl 1 an die Zeichenkette "Zahlenliste" anzuhängen. Zahlen und Zeichen vertragen sich nicht so einfach. Daher kommt die Fehlermeldung.
Eine korrigierte Version könnte so ausssehen:
ALso ich hoffe es ist verständlich was und warum ich es geändert habe. Sonst frag nochmal nach.
da treten gleich mehrere Fehler auf einmal auf:
Code: Alles auswählen
for liste in Dict_Var.values():
print("Zahlenliste" + (liste))
Mit dieser For-Schleife überschreibst du die aber wieder.
Und zwar mit der ersten Zahl aus dem Dictionary Dict_Var. Jetzt versuchst du mit
Code: Alles auswählen
print("Zahlenliste" + (liste))
Eine korrigierte Version könnte so ausssehen:
Code: Alles auswählen
Dict_Var = {
'A':1,'a':1,'Ä':6,'ä':6,'B':2,'b':2,'C':3,'c':3,'D':4,
'd':4,'E':5,'e':5,'F':8,'f':8,'G':3,'g':3,'H':5,'h':5,
'I':1,'i':1,'J':1,'j':1,'K':2,'k':2,'L':3,'l':3,'M':4,
'm':4,'N':5,'n':5,'O':7,'o':7,'P':8,'p':8,'Q':1,'q':1,
'R':2,'r':2,'S':3,'s':3,'T':4,'t':4,'U':6,'u':6,'V':6,
'W':6,'w':6,'X':5,'x':5,'Y':1,'y':1,'Z':7,'z':7,'Ü':2,
'ü':2,'Ö':3,'ö':3
}
# Eingabe Namen und Umwandlung in Liste:
print("Willkommen zur Berechnung und Deutung der Namenszahl")
name = input("Name eingeben: ")
print("Der Name lautet " + name)
liste = list(name)
print(liste)
# Den Buchstaben in Liste die variablen Zahlenwerte zuweisen:
zahlen_liste = []
for buchstabe in liste:
zahlen_liste.append(Dict_Var[buchstabe])
print(f"Zahlenliste {zahlen_liste}")
"""
Ausgabe:
Willkommen zur Berechnung und Deutung der Namenszahl
Name eingeben: Harald
Der Name lautet Harald
['H', 'a', 'r', 'a', 'l', 'd']
Zahlenliste [5, 1, 2, 1, 3, 4]
"""
`liste` ist ein nichtssagender Name und wird auch gar nicht gebraucht, da man über die Zeichen eines Strings direkt iterieren kann.
Das Dictionary zum Mapping von Buchstaben auf Werte hat auch einen unglücklichen Namen. Zudem macht es wenig Sinn sowohl Werte für Groß- wie auch für Kleinbuchstaben zu definieren wenn diese ohnehin identisch sind. Das regelt man dann bei der Abfrage und dann vergisst man auch nicht so leicht einen Wert wie in diesem Fall (kleines "v").
Ohne list comprehension könnte es dann so aussehen:
Das Dictionary zum Mapping von Buchstaben auf Werte hat auch einen unglücklichen Namen. Zudem macht es wenig Sinn sowohl Werte für Groß- wie auch für Kleinbuchstaben zu definieren wenn diese ohnehin identisch sind. Das regelt man dann bei der Abfrage und dann vergisst man auch nicht so leicht einen Wert wie in diesem Fall (kleines "v").
Ohne list comprehension könnte es dann so aussehen:
Code: Alles auswählen
CHARACTER_MAP = {
'A': 1, 'Ä': 6, 'B': 2, 'C': 3, 'D': 4, 'E': 5, 'F': 8, 'G': 3, 'H': 5,
'I': 1, 'J': 1, 'K': 2, 'L': 3, 'M': 4, 'N': 5, 'O': 7, 'P': 8, 'Q': 1,
'R': 2, 'S': 3, 'T': 4, 'U': 6, 'V': 6, 'W': 6, 'X': 5, 'Y': 1, 'Z': 7,
'Ü': 2, 'Ö': 3}
def main():
print("Willkommen zur Berechnung und Deutung der Namenszahl")
name = input("Name eingeben: ")
print(f"Der Name lautet {name}")
codes = []
for character in name:
if character in CHARACTER_MAP:
codes.append(CHARACTER_MAP[character.upper()])
print(codes)
if __name__ == '__main__':
main()
- __blackjack__
- User
- Beiträge: 13268
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Meh, und ich ich habe jetzt auf dem anderen von drei Themen mit identischem Inhalt geantwortet.
Please call it what it is: copyright infringement, not piracy. Piracy takes place in international waters, and involves one or more of theft, murder, rape and kidnapping. Making an unauthorized copy of a piece of software is not piracy, it is an infringement of a government-granted monopoly.
Bing? Kennt niemand! Also AltaVista oder Excite aber Bing? Was ist das überhaupt für ein Name?
Ne, Spaß bei Seite.
Bing ist eine Suchmaschine.
und ein Bot ist ein kleines Programm welches von Bing gestartet wurde um hier mal vorbeizuschauen, sich alles schön durchzulesen, damit dass dann auch in den Suchanfragen von Bing auftauchen kann.
Da aber niemand Bing verwendet, ist das eigentlich nicht nötig.
Ne, Spaß bei Seite.
Bing ist eine Suchmaschine.
und ein Bot ist ein kleines Programm welches von Bing gestartet wurde um hier mal vorbeizuschauen, sich alles schön durchzulesen, damit dass dann auch in den Suchanfragen von Bing auftauchen kann.
Da aber niemand Bing verwendet, ist das eigentlich nicht nötig.
Ich möchte euch ja nicht stressen, aber ich würde nur gern wissen gerade, ob mein letzter Beitrag von heute Abend überhaupt angekommen ist, denn ihn zu verfassen hat mich doch auch etwas Konzentration und Zeit gekostet, und er ist noch nicht hier zu sehen
Es gibt keinen Bot, der etwas zurückhält. Nur bei neu-postern gibt es eine erzwungene Freigabe, um Spammer zu unterlaufen.
Wenn dein Post also nicht da ist, dann wird der auch nicht mehr auftauchen. Tut mir leid. Den wirst du neu verfassen müssen.
Wenn dein Post also nicht da ist, dann wird der auch nicht mehr auftauchen. Tut mir leid. Den wirst du neu verfassen müssen.
Da fehlte mir bei der if-Abfrage natürlich der Aufruf von upper. Wenn man diesen Codeblock durch eine list comprehension ersetzt, dann wird es übersichtlicher:/me hat geschrieben: ↑Dienstag 18. Januar 2022, 13:47Code: Alles auswählen
... codes = [] for character in name: if character in CHARACTER_MAP: codes.append(CHARACTER_MAP[character.upper()]) ...
Code: Alles auswählen
codes = [CHARACTER_MAP.get(character.upper(), 0) for character in name]
Ich habe mein Programm soweit fertig, und es funktioniert fast perfekt:
Wertzuweisung_Buchstaben = {
'A':1,'a':1,'Ä':6,'ä':6,'B':2,'b':2,'C':3,'c':3,'D':4,
'd':4,'E':5,'e':5,'F':8,'f':8,'G':3,'g':3,'H':5,'h':5,
'I':1,'i':1,'J':1,'j':1,'K':2,'k':2,'L':3,'l':3,'M':4,
'm':4,'N':5,'n':5,'O':7,'o':7,'P':8,'p':8,'Q':1,'q':1,
'R':2,'r':2,'S':3,'s':3,'T':4,'t':4,'U':6,'u':6,'V':6,
'W':6,'w':6,'X':5,'x':5,'Y':1,'y':1,'Z':7,'z':7,'Ü':2,
'ü':2,'Ö':3,'ö':3,'v':6,' ':0,'-':0
}
print("Willkommen zur Berechnung und Deutung der Namenszahl")
# Umwandlung in Liste:
name = input("Name eingeben: ")
liste = list(name)
print(liste)
# Den Buchstaben in Liste die variablen Zahlenwerte zuweisen:
zahlen_liste = []
for buchstabe in liste:
zahlen_liste.append(Wertzuweisung_Buchstaben[buchstabe])
print(f"Zahlenliste {zahlen_liste}")
import math
#Quersummen ziehen
Quersumme = (zahlen_liste)
summe = 0.0
for ein_wert in Quersumme:
summe = summe + ein_wert
def Namenszahl(summe):
Namenszahl = 0
while summe > 0:
letzteZiffer = summe % 10
Namenszahl = Namenszahl + letzteZiffer
summe = summe // 10
return Namenszahl
print("Die Namenszahl ist:" ,(int(Namenszahl(summe))))
----> bei Ausführung wird daraus:
Willkommen zur Berechnung und Deutung der Namenszahl
Name eingeben: Harald
['H', 'a', 'r', 'a', 'l', 'd']
Zahlenliste [5, 1, 2, 1, 3, 4]
Die Namenszahl ist: 7
Process finished with exit code 0
..... soweit, so gut, aber wenn ich als Namen z.B. den Namen Claudia eingebe ist die Ausgabe fehlerhaft:
Willkommen zur Berechnung und Deutung der Namenszahl
Name eingeben: Claudia
['C', 'l', 'a', 'u', 'd', 'i', 'a']
Zahlenliste [3, 3, 1, 6, 4, 1, 1]
Die Namenszahl ist: 10
Process finished with exit code 0
Wie ihr sehen könnt ist die Zahl 10, was das Programm ja nochmals auf eine einstellige Zahl reduzieren kann, nämlich auf 1.
ich denke, der Fehler liegt irgendwo in dem Block (#Quersummen ziehen), denn bis dorthin läuft ja alles normal. Die while-schleife sollte doch eigentlich weiter Quersummen ziehen gegen 0, bis es einfach nicht mehr geht und auf jeden Fall nur noch eine einstellige Zahl da steht. Tut sie aber nicht und ich weiß nicht warum das so ist.
Wertzuweisung_Buchstaben = {
'A':1,'a':1,'Ä':6,'ä':6,'B':2,'b':2,'C':3,'c':3,'D':4,
'd':4,'E':5,'e':5,'F':8,'f':8,'G':3,'g':3,'H':5,'h':5,
'I':1,'i':1,'J':1,'j':1,'K':2,'k':2,'L':3,'l':3,'M':4,
'm':4,'N':5,'n':5,'O':7,'o':7,'P':8,'p':8,'Q':1,'q':1,
'R':2,'r':2,'S':3,'s':3,'T':4,'t':4,'U':6,'u':6,'V':6,
'W':6,'w':6,'X':5,'x':5,'Y':1,'y':1,'Z':7,'z':7,'Ü':2,
'ü':2,'Ö':3,'ö':3,'v':6,' ':0,'-':0
}
print("Willkommen zur Berechnung und Deutung der Namenszahl")
# Umwandlung in Liste:
name = input("Name eingeben: ")
liste = list(name)
print(liste)
# Den Buchstaben in Liste die variablen Zahlenwerte zuweisen:
zahlen_liste = []
for buchstabe in liste:
zahlen_liste.append(Wertzuweisung_Buchstaben[buchstabe])
print(f"Zahlenliste {zahlen_liste}")
import math
#Quersummen ziehen
Quersumme = (zahlen_liste)
summe = 0.0
for ein_wert in Quersumme:
summe = summe + ein_wert
def Namenszahl(summe):
Namenszahl = 0
while summe > 0:
letzteZiffer = summe % 10
Namenszahl = Namenszahl + letzteZiffer
summe = summe // 10
return Namenszahl
print("Die Namenszahl ist:" ,(int(Namenszahl(summe))))
----> bei Ausführung wird daraus:
Willkommen zur Berechnung und Deutung der Namenszahl
Name eingeben: Harald
['H', 'a', 'r', 'a', 'l', 'd']
Zahlenliste [5, 1, 2, 1, 3, 4]
Die Namenszahl ist: 7
Process finished with exit code 0
..... soweit, so gut, aber wenn ich als Namen z.B. den Namen Claudia eingebe ist die Ausgabe fehlerhaft:
Willkommen zur Berechnung und Deutung der Namenszahl
Name eingeben: Claudia
['C', 'l', 'a', 'u', 'd', 'i', 'a']
Zahlenliste [3, 3, 1, 6, 4, 1, 1]
Die Namenszahl ist: 10
Process finished with exit code 0
Wie ihr sehen könnt ist die Zahl 10, was das Programm ja nochmals auf eine einstellige Zahl reduzieren kann, nämlich auf 1.
ich denke, der Fehler liegt irgendwo in dem Block (#Quersummen ziehen), denn bis dorthin läuft ja alles normal. Die while-schleife sollte doch eigentlich weiter Quersummen ziehen gegen 0, bis es einfach nicht mehr geht und auf jeden Fall nur noch eine einstellige Zahl da steht. Tut sie aber nicht und ich weiß nicht warum das so ist.
Beim kopieren sind in der obigen Version die Einzüge verlorengegangen.
Wertzuweisung_Buchstaben = {
'A':1,'a':1,'Ä':6,'ä':6,'B':2,'b':2,'C':3,'c':3,'D':4,
'd':4,'E':5,'e':5,'F':8,'f':8,'G':3,'g':3,'H':5,'h':5,
'I':1,'i':1,'J':1,'j':1,'K':2,'k':2,'L':3,'l':3,'M':4,
'm':4,'N':5,'n':5,'O':7,'o':7,'P':8,'p':8,'Q':1,'q':1,
'R':2,'r':2,'S':3,'s':3,'T':4,'t':4,'U':6,'u':6,'V':6,
'W':6,'w':6,'X':5,'x':5,'Y':1,'y':1,'Z':7,'z':7,'Ü':2,
'ü':2,'Ö':3,'ö':3,'v':6,' ':0,'-':0
}
print("Willkommen zur Berechnung und Deutung der Namenszahl")
# Umwandlung in Liste:
name = input("Name eingeben: ")
liste = list(name)
print(liste)
# Den Buchstaben in Liste die variablen Zahlenwerte zuweisen:
zahlen_liste = []
for buchstabe in liste:
zahlen_liste.append(Wertzuweisung_Buchstaben[buchstabe])
print(f"Zahlenliste {zahlen_liste}")
import math
#Quersummen ziehen
Quersumme = (zahlen_liste)
summe = 0.0
for ein_wert in Quersumme:
summe = summe + ein_wert
def Namenszahl(summe):
Namenszahl = 0
while summe > 0:
letzteZiffer = summe % 10
Namenszahl = Namenszahl + letzteZiffer
summe = summe // 10
return Namenszahl
print("Die Namenszahl ist:" ,(int(Namenszahl(summe))))
Wertzuweisung_Buchstaben = {
'A':1,'a':1,'Ä':6,'ä':6,'B':2,'b':2,'C':3,'c':3,'D':4,
'd':4,'E':5,'e':5,'F':8,'f':8,'G':3,'g':3,'H':5,'h':5,
'I':1,'i':1,'J':1,'j':1,'K':2,'k':2,'L':3,'l':3,'M':4,
'm':4,'N':5,'n':5,'O':7,'o':7,'P':8,'p':8,'Q':1,'q':1,
'R':2,'r':2,'S':3,'s':3,'T':4,'t':4,'U':6,'u':6,'V':6,
'W':6,'w':6,'X':5,'x':5,'Y':1,'y':1,'Z':7,'z':7,'Ü':2,
'ü':2,'Ö':3,'ö':3,'v':6,' ':0,'-':0
}
print("Willkommen zur Berechnung und Deutung der Namenszahl")
# Umwandlung in Liste:
name = input("Name eingeben: ")
liste = list(name)
print(liste)
# Den Buchstaben in Liste die variablen Zahlenwerte zuweisen:
zahlen_liste = []
for buchstabe in liste:
zahlen_liste.append(Wertzuweisung_Buchstaben[buchstabe])
print(f"Zahlenliste {zahlen_liste}")
import math
#Quersummen ziehen
Quersumme = (zahlen_liste)
summe = 0.0
for ein_wert in Quersumme:
summe = summe + ein_wert
def Namenszahl(summe):
Namenszahl = 0
while summe > 0:
letzteZiffer = summe % 10
Namenszahl = Namenszahl + letzteZiffer
summe = summe // 10
return Namenszahl
print("Die Namenszahl ist:" ,(int(Namenszahl(summe))))
divide et impera, mach zwei Funktionen draus, eine welche die Quersumme berechnet und eine zweite die dir den Zahlenwert ausrechnet. Dann kann die Quersumme einfach noch ein zweites Mal darüber gebildet werden.Diese Zahlenliste bräuchte ich, um in einem weiteren Schritt über eine while-schleife so lange Quersummen zu bilden, bis eine einstellige Zahl übrigbleibt, welche dann die gesuchte Namenszahl darstellt.
wie müssen nun also die Befehle aussehen, damit ich zu meiner Liste mit den Variablen komme, um dann weiter machen zu können?
Generell dein Code liest sich schöner, wenn du ihn als Code hochlädst.
Das import math ist überflüssig. Die Hinweise die dir zum Beispiel /me gegeben hat, sind auch sehr wertvoll, du solltest Sie in deinen Code einbauen.
Code: Alles auswählen
#!/usr/bin/env python3
import typing
def namezahl(name: str) -> typing.List[int]:
character_map = {
'a': 1, 'ä': 6, 'b': 2,
'c': 3, 'd': 4, 'e': 5,
'f': 8, 'g': 3, 'h': 5,
'i': 1, 'j': 1, 'k': 2,
'l': 3, 'm': 4, 'n': 5,
'o': 7, 'p': 8, 'q': 1,
'r': 2, 's': 3, 't': 4,
'u': 6, 'v': 6, 'w': 6,
'x': 5, 'y': 1, 'z': 7,
'ü': 2, 'ö': 3
}
return [character_map.get(char.lower(), 0) for char in name]
def checksum(number: int) -> int:
result = 0
while number:
number, remain = divmod(number, 10)
result += remain
if result > 9:
result = checksum(result)
return result
def main():
print("Willkommen zur Berechnung und Deutung der Namenszahl")
name = input("bitte den Namen eingeben: ")
numbers = namezahl(name)
namenumber = checksum(sum(numbers))
print(f"Die Namenszahl ist: {namenumber}"
if __name__ == '__main__':
main()
@PanTau,
Zeile 17 wird zwar angezeigt, aber der Fehler wird von Python nicht richtig erkannt. Eigentlich ist Zeile 5 nur um ein Zeichen nach rechts gerutscht.
Wenn du die Einrückung von Zeile 5 um 1 Zeichen verringerst, sollte es passen.
Zeile 35 hat auch ein Problem:
Da ist die Klammer der print-Funktion nicht geschlossen.
Das Programm funktioniert dann zwar, ich würde aber auch noch einen Alternativvorschlag machen:
Die Funktion crosssum berechnet aus der Liste aller Buchstabenzahlen die Quersumme bis diese einstellig ist.
Erklärung zu der Zeile in der while-Schleife:
number ist eine Liste von Zahlen
sum() bildet die Summe aller Zahlen in dieser Liste
str() konvert diese Summenzahl in eine Zeichenkette aus Ziffern
map(int, ...) nimmt jede Ziffer aus der Zeichenkette und konvert sie einzeln in Zahlen
list() macht daraus schließlich eine Liste von Zahlen
Die While-Schleife wird erst abgebrochen wenn diese Liste aus nur einem Element besteht
Zeile 17 wird zwar angezeigt, aber der Fehler wird von Python nicht richtig erkannt. Eigentlich ist Zeile 5 nur um ein Zeichen nach rechts gerutscht.
Wenn du die Einrückung von Zeile 5 um 1 Zeichen verringerst, sollte es passen.
Zeile 35 hat auch ein Problem:
Da ist die Klammer der print-Funktion nicht geschlossen.
Das Programm funktioniert dann zwar, ich würde aber auch noch einen Alternativvorschlag machen:
Code: Alles auswählen
def namezahl(name):
character_map = {
'a': 1, 'ä': 6, 'b': 2,
'c': 3, 'd': 4, 'e': 5,
'f': 8, 'g': 3, 'h': 5,
'i': 1, 'j': 1, 'k': 2,
'l': 3, 'm': 4, 'n': 5,
'o': 7, 'p': 8, 'q': 1,
'r': 2, 's': 3, 't': 4,
'u': 6, 'v': 6, 'w': 6,
'x': 5, 'y': 1, 'z': 7,
'ü': 2, 'ö': 3
}
return [character_map.get(char.lower(), 0) for char in name]
def crosssum(numbers):
while len(numbers) > 1:
numbers = list(map(int, str(sum(numbers))))
return sum(numbers)
def main():
print("Willkommen zur Berechnung und Deutung der Namenszahl")
name = input("bitte den Namen eingeben: ")
numbers = namezahl(name)
namenumber = crosssum(numbers)
print(f"Die Namenszahl ist: {namenumber}")
if __name__ == "__main__":
main()
Erklärung zu der Zeile in der while-Schleife:
number ist eine Liste von Zahlen
sum() bildet die Summe aller Zahlen in dieser Liste
str() konvert diese Summenzahl in eine Zeichenkette aus Ziffern
map(int, ...) nimmt jede Ziffer aus der Zeichenkette und konvert sie einzeln in Zahlen
list() macht daraus schließlich eine Liste von Zahlen
Die While-Schleife wird erst abgebrochen wenn diese Liste aus nur einem Element besteht
Ich danke dir rogerb, das sieht alles gut aus. Ich kann es leider noch nicht laufen lassen. Es gibt mir folgende Fehlermeldung:
File "C:\Users\Heiko\Desktop\Python\Namenszahl2.py", line 11
return [character_map.get(char.lower(), 0) for char in name]
IndentationError: unexpected indent
File "C:\Users\Heiko\Desktop\Python\Namenszahl2.py", line 11
return [character_map.get(char.lower(), 0) for char in name]
IndentationError: unexpected indent