Seite 1 von 1
Alphabet nummerieren
Verfasst: Montag 8. Juni 2020, 11:24
von Jan163
Hallo zusammen!
Ich bin auf der Suche nach einem Programm, welches mir einen Text in Zahlen umwandelt. Die Zahlen sollen der jeweiligen Nummer des Buchstaben im Alphabet entsprechen. Also nein, ich suche nicht die Befehle chr() oder ord()
Es sollte ungefähr in Python Shell so ablaufen:
Geben Sie einen Satz ein
" Hallo "
Ausgabe des Programms:
8, 1, 12, 12, 15
Kennt jemand von euch zufällig solch ein Programm?
LG
Re: Alphabet nummerieren
Verfasst: Montag 8. Juni 2020, 11:46
von Sirius3
Nein, also Du suchst doch `ord`.
Re: Alphabet nummerieren
Verfasst: Montag 8. Juni 2020, 11:50
von __blackjack__
@Jan163: Wobei `ord()` hier tatsächlich nützlich sein könnte.
So ein Programm ist mir nicht bekannt, das kann man sich aber leicht selbst schreiben. Einfach eine Schleife über die Zeichenkette (in Kleinbuchstaben gewandelt), schauen ob das aktuelle Zeichen zwischen "a" und "z" liegt (inklusive beider Endpunkte) und falls ja in die entsprechende Zahl umwandeln. Die sich aus dem `ord()`-Wert berechnen lässt. Die in einer Liste sammeln, und am Ende mit ", " und der `join()`-Methode auf Zeichenketten zum Ergebnis zusammenfügen.
Der Benutzer wird ja nach einem *Satz* gefragt. Wie soll denn da beispielsweise mit Leer- und Satzzeichen umgegangen werden?
Re: Alphabet nummerieren
Verfasst: Montag 8. Juni 2020, 12:18
von nezzcarth
Jan163 hat geschrieben: Montag 8. Juni 2020, 11:24
Kennt jemand von euch zufällig solch ein Programm?
Ja,
Code: Alles auswählen
echo -n "haLlOä" | iconv -t ascii//TRANSLIT | perl -ne 'for(split//){$_=lc;$_=(ord)-96 ." ";print}'
8 1 12 12 15 1 5
… …

Re: Alphabet nummerieren
Verfasst: Montag 8. Juni 2020, 12:18
von Jankie
Du kannst aber auch umständlich ein Dictionary schreiben, bei dem jedem Buchstaben eine Zahl zugewiesen wird. Aber ich halte hier auch ord() für die bessere Wahl. Um von dem ord() Wert auf den Index im Alphabet zu kommen musst du nur 96 abziehen (bei Kleinbuchstaben).
Re: Alphabet nummerieren
Verfasst: Montag 8. Juni 2020, 12:46
von __blackjack__
Eine Lösung in Hy (ein in Python implementierter Lisp-Dialekt):
Code: Alles auswählen
#!/usr/bin/env hy3
(setv LETTER-OFFSET (dec (ord "a")))
(defn letter? [character] (<= "a" character "z"))
(defn letter->number [letter] (- (ord letter) LETTER-OFFSET))
(defmain [&rest args]
(setv sentence (-> (input "Geben Sie einen Satz ein:\n") (.lower)))
(->> (filter letter? sentence)
(map letter->number)
(map str)
(.join ", ")
(print)))
Re: Alphabet nummerieren
Verfasst: Dienstag 9. Juni 2020, 13:33
von __blackjack__
Das ist eine Aufgabe die auch mein guter alter C64 in BASIC erledigen kann.
Code: Alles auswählen
10 O=ASC("A")-1:PRINT "GEBEN SIE EINEN SATZ EIN:":INPUT S$:N=LEN(S$)
20 FOR I=1 TO N:C$=MID$(S$,I,1):IF C$<"A" OR C$>"Z" THEN 50
30 IF I>1 THEN PRINT ",";
40 PRINT STR$(ASC(C$)-O);
50 NEXT
Testlauf:
Code: Alles auswählen
RUN
GEBEN SIE EINEN SATZ EIN:
? HALLO
8, 1, 12, 12, 15
READY.
Edit: Bugfix.