Die Python-Funktion ord(c) liefert den Unicode-Codepoint eines einzelnen Zeichens als Ganzzahl. Sie ist das Gegenstück zu chr()chr(ord(c)) liefert das Originalzeichen. ord() arbeitet mit allen Unicode-Zeichen, nicht nur ASCII.

Einleitung

Computer kennen keine Zeichen — sie kennen Zahlen. Jedes Zeichen in Pythons Unicode-Strings ist ein Codepoint: eine eindeutige Ganzzahl im Bereich 0 bis 0x10FFFF (1.114.111). ord() macht diese Zahl sichtbar.

Beispiele:

  • ord('A')65 (ASCII)
  • ord('a')97
  • ord('ä')228
  • ord('€')8364
  • ord('🎉')127881

ord() akzeptiert nur einzelne Zeichen — also Strings der Länge 1. Bei längeren Strings oder leeren Strings wirft die Funktion einen TypeError. Auch bei Bytes funktioniert sie: ord(b'A')65.

Syntax

Python Syntax
ord(c)
Parameter
c

Ein String oder Byte-String der Länge 1.

Rückgabewert

Eine int mit dem Unicode-Codepoint des Zeichens.

Beispiele

Verschiedene Zeichen

Selbst Emojis und Sonderzeichen haben einen eindeutigen Codepoint — ord() liefert ihn unabhängig vom Encoding:

Python Beispiel
print(ord('A'))
print(ord('a'))
print(ord('0'))
print(ord('ä'))
print(ord('€'))
print(ord('🎉'))
Output
65
97
48
228
8364
127881

Hin- und Rückrichtung

chr() und ord() sind exakte Umkehrfunktionen voneinander — perfekt für Codepoint-basierte Operationen:

Python Beispiel
z = 'Ψ'
cp = ord(z)
back = chr(cp)
print(cp, back, cp == ord(back))
Output
936 Ψ True

Bytes statt str

Bei Byte-Strings liefert ord() die Byte-Wert (0–255):

Python Beispiel
print(ord(b'A'))
print(ord(b'\xff'))
Output
65
255

Praktische Beispiele

Caesar-Verschiebung implementieren

Klassisches Crypto-Spielzeug: jeder Buchstabe um n Positionen verschieben — ord() liefert die Position, chr() macht daraus wieder ein Zeichen:

Python Beispiel
def caesar(text, shift):
    result = []
    for c in text:
        if 'A' <= c <= 'Z':
            result.append(chr((ord(c) - ord('A') + shift) % 26 + ord('A')))
        elif 'a' <= c <= 'z':
            result.append(chr((ord(c) - ord('a') + shift) % 26 + ord('a')))
        else:
            result.append(c)
    return "".join(result)

print(caesar("Hallo Welt", 3))
print(caesar("Kdoor Zhow", -3))
Output
Kdoor Zhow
Hallo Welt

Zeichen-Range bauen (alle Buchstaben A–Z)

Die Kombination von ord(), chr() und range() ist ein kompaktes Idiom für Zeichen-Sequenzen:

Python Beispiel
uppercase_letters = [chr(c) for c in range(ord('A'), ord('Z') + 1)]
print(uppercase_letters)
Output
['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']

Druckbare Zeichen prüfen

Mit ord() lassen sich Codepoint-Bereiche direkt vergleichen — schneller als per Regex:

Python Beispiel
def is_ascii_printable(c):
    return 32 <= ord(c) <= 126

print(is_ascii_printable('A'))
print(is_ascii_printable('\n'))
print(is_ascii_printable('ä'))
Output
True
False
False

Praktische Hinweise

  • Nur Strings der Länge 1 — sonst TypeError. Ein leerer String oder mehrere Zeichen sind nicht erlaubt.
  • Unicode, nicht UTF-8: ord() liefert den Codepoint, nicht die Byte-Repräsentation. Für Bytes vorher in Bytes umwandeln und einzeln ansprechen.
  • Verwandte Funktion: chr() (Codepoint → Zeichen), bytes.fromhex() / int(hex, 16) für andere Konvertierungen.
  • unicodedata-Modul liefert Namen, Kategorien und Normalisierung für jeden Codepoint.
/ Weiter

Zurück zu Builtin Functions

Zur Übersicht