ord()
Zwraca kod Unicode pojedynczego znaku, np. ord("A") to 65. Działa odwrotnie niż chr().
- Zwraca
- Liczbę całkowitą, czyli kod znaku w standardzie Unicode.
Przykład
#print(ord("A"), ord("a"), ord("ł"))
print(ord("c") - ord("a"))
for char in "Ań1":
print(char, ord(char), f"U+{ord(char):04X}")Definicja i zastosowanie
#Funkcja ord(znak) przyjmuje napis złożony z dokładnie jednego znaku i zwraca jego numer w standardzie Unicode. ord("A") to 65, ord("a") to 97, a ord("ł") to 322. Napis pusty albo dłuższy niż jeden znak zgłasza TypeError.
Python porównuje napisy właśnie według tych kodów, znak po znaku. Dlatego wielkie litery są „mniejsze” od małych ("Z" < "a"), a polskie litery z ogonkami trafiają przy sortowaniu na koniec, za "z". Znając kody, łatwo zrozumieć, skąd biorą się takie wyniki.
Kod w zapisie szesnastkowym uzyskasz przez hex(ord(znak)) albo f-string f"U+{ord(znak):04X}", w formacie używanym w tabelach Unicode. Razem z chr() funkcja pozwala liczyć na znakach, np. wyznaczyć pozycję litery w alfabecie: ord(litera) - ord("a").
Składnia
#ord(c)Parametry
#c
str o długości 1
Pojedynczy znak.
Więcej przykładów
#words = ["żółw", "zebra", "Ania", "ala", "łódź"]
print(sorted(words))
print(ord("Z"), ord("a"), ord("z"), ord("ł"), ord("ż"))
print(sorted(words, key=str.lower))Wielkie litery mają mniejsze kody niż małe, a litery z ogonkami leżą daleko za z, dlatego trafiają na koniec listy.
def letter_position(letter):
return ord(letter.lower()) - ord("a") + 1
print(letter_position("C"), letter_position("z"))
try:
ord("ab")
except TypeError as error:
print(error)Dobre praktyki
#- Do sortowania bez rozróżniania wielkości liter użyj
key=str.lower. Pełne sortowanie po polsku, z ogonkami na właściwych miejscach, wymaga modułulocalealbo biblioteki PyICU. - Kody wszystkich znaków napisu uzyskasz wyrażeniem
[ord(c) for c in tekst]. - Zakres znaków sprawdzisz bez
ord(), porównując napisy: warunek"a" <= znak <= "z"daje ten sam wynik co porównanie kodów.
Powiązane hasła
#Widzisz błąd albo brakuje przykładu? Napisz do nas.