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() :wink:

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? :D
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? :D
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.