Hallo,
Ich möchte ein kleines Programm schreiben, das die Namenszahl eines eingegebenen Namens ausrechnet. Jedoch ist dazu nötig, dass ich der Liste, deren Elemente aus strings besteht, mit den entsprechenden variablen Zahlenwerten zu ersetzen. Wie lautet der Befehl dafür?
Zur Veranschaulichung kopiere ich das Skript bis zu dem Punkt mal hier rein:
#Zahlenwertzuweisung Buchstaben:
A,a,I,i,J,j,Q,q,Y,y=1,1,1,1,1,1,1,1,1,1
B,b,K,k,R,r=2,2,2,2,2,2
C,c,G,g,L,l,S,s=3,3,3,3,3,3,3,3
D,d,M,m,T,t=4,4,4,4,4,4
E,e,H,h,N,n,X,x=5,5,5,5,5,5,5,5
U,u,V,v,W,w=6,6,6,6,6,6
O,o,Z,z=7,7,7,7
F,f,P,p=8,8,8,8
#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)
-->daraus wird nach Ausführung:
Willkommen zur Berechnung und Deutung der Namenszahl
Name eingeben: Gudrun
Der Name lautet Gudrun
['G', 'u', 'd', 'r', 'u', 'n']
#Den Buchstaben in der Liste die variablen Zahlenwerte zuweisen:
Hier ist der Haken. Ich finde den entsprechenden Befehl in keinem der bis jetzt angeschauten Tutorials.
lg,
PanTau
Listeninhalt umwandeln
- __blackjack__
- User
- Beiträge: 13163
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Wenn Gross- und Kleinbuchstabe immer auf den gleichen Wert abgebildet werden, braucht man auch nur eine Variante speichern, weil man die Eingabebuchstaben ja entsprechend umwandeln kann.
Was passiert eigentlich bei Leuten die Namen haben die nicht nur aus ASCII-Buchstaben bestehen?
Was passiert eigentlich bei Leuten die Namen haben die nicht nur aus ASCII-Buchstaben bestehen?
“There will always be things we wish to say in our programs that in all known languages can only be said poorly.” — Alan J. Perlis
I wish there was a button on my monitor to turn up the intelligence.
Vielen Dank für die Blumen!
Ich bin halt noch ein Programmier-Anfänger, deshalb stelle ich mich noch ein bisschen dumm an. Aber deine Frage bezüglich Buchstaben. die nicht nur aus ASCII-Buchstaben bestehen, ist durchaus berechtigt .... vielen Dank für den Hinweis.
lg,
PanTau
Vielen Dank für die Blumen!
Ich bin halt noch ein Programmier-Anfänger, deshalb stelle ich mich noch ein bisschen dumm an. Aber deine Frage bezüglich Buchstaben. die nicht nur aus ASCII-Buchstaben bestehen, ist durchaus berechtigt .... vielen Dank für den Hinweis.
lg,
PanTau
- __blackjack__
- User
- Beiträge: 13163
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@PanTau: Was Du da zitiert hast ist meine aktuelle ”Signatur” die unter jedem Beitrag von mir erscheint. Also nicht persönlich an Dich addressiert, und sagt ja eher aus, dass *ich* mir so einen Knopf am Monitor wünsche. Und es ist im Zusammenhang mit der zweiten Zeile, mit dem zugegebenermassen etwas mauen Wortwitz zu sehen, dass „bright“, zu Deutsch „hell“, im englischen als Synonym für „intelligent“ verwendet werden kann.
“There will always be things we wish to say in our programs that in all known languages can only be said poorly.” — Alan J. Perlis
- DeaD_EyE
- User
- Beiträge: 1025
- Registriert: Sonntag 19. September 2010, 13:45
- Wohnort: Hagen
- Kontaktdaten:
https://jaegers.net/gematrie-mit-der-deutschen-sprache/Was passiert eigentlich bei Leuten die Namen haben die nicht nur aus ASCII-Buchstaben bestehen?
https://jaegers.net/tools-downloads-und ... -gematrie/
Umlaute müssen ersetzt werden, wenn eine Gematrie ohne Umlaute verwendet wird.
Code: Alles auswählen
import string
translation_classic = {
char: index for index, char in enumerate(string.ascii_lowercase[:9], start=1)
}
translation_classic |= {
char: index * 10 for index, char in enumerate(string.ascii_lowercase[9:18], start=1)
}
translation_classic |= {
char: index * 100 for index, char in enumerate(string.ascii_lowercase[18:], start=1)
}
translation_seq = {
char: index for index, char in enumerate(string.ascii_lowercase, start=1)
}
translation_fortlaufend = list(string.ascii_lowercase)
translation_fortlaufend.insert(translation_fortlaufend.index("a") + 1, "ä")
translation_fortlaufend.insert(translation_fortlaufend.index("o") + 1, "ö")
translation_fortlaufend.insert(translation_fortlaufend.index("u") + 1, "ü")
translation_fortlaufend = {
char: index for index, char in enumerate(translation_fortlaufend, start=1)
}
umlauts = {"ä": "ae", "ö": "oe", "ü": "ue"}
def umlaut_ersetzung(wort):
for umlaut, ersetzung in umlauts.items():
wort = wort.replace(umlaut, ersetzung)
return wort
def gematrie_deutsch(wort, translation, umlaute=True):
wort = wort.lower()
if umlaute:
wort = umlaut_ersetzung(wort)
return sum(translation.get(char, 0) for char in wort)
wort = "Hallo"
print("Klassisch", gematrie_deutsch(wort, translation_classic, umlaute=True))
print("Sequenziell fortlaufend", gematrie_deutsch(wort, translation_seq, umlaute=True))
# bei einer Gematrie mit Umlauten die Umlaute nicht ersetzen.
# deswegen ist umlaute=False
print(
"Sequenziell fortlaufend mit Umlaute (umlaute=False)",
gematrie_deutsch(wort, translation_fortlaufend, umlaute=False),
)
D.h. wenn z.B. ein ß vorkommt, wird das nicht gezählt. Um ß durch ss zu ersetzen, kann anstatt str.lower die Methode str.casefold verwendet werden.
https://docs.python.org/3/library/stdty ... r.casefold
Anstatt das Mapping per Hand einzugeben, habe ich bereits vorhandenes genutzt. Unter anderem gibt es in dem Modul string unterschiedliche Zeichenketten geordnet nach Gruppen (ascii_lowercase, ascii_uppercase, digits). Man kann es aber auch per Hand machen und um sich die Eingabe von Großbuchstaben zu vermeiden, macht man alles in Kleinbuchstaben. Die Zahlenwerte für Klein- und Großbuchstaben sind identisch.
Mapping sequenziell ohne Umlaute (aus string.ascii_lowercase erzeugt):
Code: Alles auswählen
translation_seq = {
"a": 1,
"b": 2,
"c": 3,
"d": 4,
"e": 5,
"f": 6,
"g": 7,
"h": 8,
"i": 9,
"j": 10,
"k": 11,
"l": 12,
"m": 13,
"n": 14,
"o": 15,
"p": 16,
"q": 17,
"r": 18,
"s": 19,
"t": 20,
"u": 21,
"v": 22,
"w": 23,
"x": 24,
"y": 25,
"z": 26,
}
Mapping sequenziell mit Umlaute:
Code: Alles auswählen
translation_seq = {
"a": 1,
"ä": 2,
"b": 3,
"c": 4,
"d": 5,
"e": 6,
"f": 7,
"g": 8,
"h": 9,
"i": 10,
"j": 11,
"k": 12,
"l": 13,
"m": 14,
"n": 15,
"o": 16,
"ö": 17,
"p": 18,
"q": 19,
"r": 20,
"s": 21,
"t": 22,
"u": 23,
"ü": 24,
"v": 25,
"w": 26,
"x": 27,
"y": 28,
"z": 29,
}
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server