Alphabetische Buchstaben in Python in Zahlen umwandeln

Wie können die folgenden Aufgaben erledigt werden?

characters = ['a''b''c''d''e''f''g''h''i''j''k''l''m''n''o''p''q''r''t''u''v''w''x''y''z']
numbers = ['1''2''3''4''5''6''7''8''9''10''11''12''13''14''15''16''17''18''19''20''21''22''23''24']
text = raw_input(' Write text: ')

Ich habe versucht, es auf viele Arten zu lösen, aber ich bin nicht auf den Punkt gekommen. Ich möchte exc machen. Wenn ich "hallo" eintippe, soll die Ausgabe in Zahlen aufgereiht sein wie im Alphabet. Beispiel a = 1 < im Alphabet.

Wie wäre es mit so etwas wie diesem:

print [ord(char) - 96 for char in raw_input('Write Text: ').lower()]

ord Listenverständnis ASCII-Zeichencodes

EDIT Da Sie mich gebeten haben, es zu erklären, werde ich es tun... obwohl es in den Kommentaren bereits ziemlich gut von [?] erklärt wurde.

Lassen Sie uns das in mehr als einer Zeile machen, um zu beginnen.

input = raw_input('Write Text: ')
input = input.lower()
output = []
for character in input:
    number = ord(character) - 96
    output.append(number)
print output

Das macht das Gleiche, ist aber besser lesbar. Vergewissern Sie sich, dass Sie verstehen können, was hier vor sich geht, bevor Sie versuchen, meine erste Antwort zu verstehen. Alles hier ist ziemlich standardmäßiges, einfaches Python. Das einzige, was zu beachten ist, ist die Funktion "ord". ord steht für ordinal, und so ziemlich jede Hochsprache hat diese Art von Funktion zur Verfügung. Sie gibt Ihnen eine Abbildung auf die numerische Darstellung eines beliebigen Zeichens. Die Umkehrfunktion von ord wird chr genannt.

chr(ord('x')) == 'x' # for any character, not just x.

Wenn Sie selbst testen, ist die Ordnungszahl von a 97 (der dritte Link, den ich oben gepostet habe, zeigt den kompletten ASCII-Zeichensatz). Jeder Kleinbuchstabe liegt im Bereich 97-122 (26 Zeichen). Wenn Sie also einfach 96 von der Ordnungszahl eines beliebigen Kleinbuchstabens abziehen, erhalten Sie seine Position im Alphabet, wenn Sie 'a' == 1 nehmen. Die Ordnungszahl von 'b' == 98, 'c' == 99, usw. Wenn Sie 96 subtrahieren, ist 'b' == 2, 'c' == 3, usw.

Der Rest der ursprünglichen Lösung, die ich gepostet habe, ist nur ein Python-Trick, den man lernen kann und der sich Listenverständnis nennt. Aber ich würde mich nicht so sehr darauf konzentrieren, sondern eher darauf, zu lernen, das Problem in jeder Sprache zu lösen, in der ord Ihr Freund ist. Ich hoffe, das hilft.

Kommentare (4)

Dies ist eine Funktion, die ich für diesen Zweck verwendet habe. Sie funktioniert sowohl für Groß- als auch für Kleinbuchstaben.


def convert_char(old):
    if len(old) != 1:
        return 0
    new = ord(old)
    if 65 
Kommentare (3)
>>> [str(ord(string.lower(c)) - ord('a') + 1) for c in string.letters]
['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17',
'18', '19', '20', '21', '22', '23', '24', '25', '26', '1', '2', '3', '4', '5', '6', '7', '8',
'9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24',
 '25', '26']
Kommentare (0)