chr()

Zwraca znak o podanym kodzie Unicode, np. chr(65) to "A". Działa odwrotnie niż ord().

Zwraca
Napis złożony z jednego znaku.
Na tej stronie

Przykład

#
Python
print(chr(65), chr(97), chr(261))
print(chr(0x1F40D))

labels = [chr(ord("A") + i) for i in range(4)]
print(labels)
Wynikzapisany wynik, możesz go sprawdzić
A a ą
🐍
['A', 'B', 'C', 'D']

Definicja i zastosowanie

#

Funkcja chr(kod) zamienia liczbę całkowitą na jednoznakowy napis, którego numer w standardzie Unicode jest równy tej liczbie. chr(65) to "A", chr(97) to "a", a chr(261) to polskie "ą". Odwrotną zamianę, ze znaku na liczbę, wykonuje ord().

Unicode przypisuje numer każdemu znakowi: literom wszystkich alfabetów, cyfrom, symbolom i emoji. Poprawne kody mieszczą się w zakresie od 0 do 1 114 111 (szesnastkowo 0x10FFFF), a liczba spoza zakresu zgłasza ValueError. Kody często zapisuje się szesnastkowo, np. chr(0x1F40D) to emoji węża.

Kolejne litery alfabetu łacińskiego mają kolejne kody, dlatego chr() razem z ord() pozwala przesuwać litery, jak w szyfrze Cezara, albo generować etykiety odpowiedzi A, B, C, D. Polskie litery z ogonkami leżą poza tym ciągiem, więc takie obliczenia ich nie obejmują.

Składnia

#
Składnia
chr(i)

Parametry

#
  • i

    int od 0 do 1114111

    Kod znaku w standardzie Unicode.

Więcej przykładów

#
Szyfr Cezara
Python
def caesar(text, shift):
    result = ""
    for char in text:
        if "a" <= char <= "z":
            result += chr((ord(char) - ord("a") + shift) % 26 + ord("a"))
        else:
            result += char
    return result

secret = caesar("python jest super", 3)
print(secret)
print(caesar(secret, -3))
Wynikzapisany wynik, możesz go sprawdzić
sbwkrq mhvw vxshu
python jest super
Zakres znaków i błędny kod
Python
print("".join(chr(code) for code in range(ord("a"), ord("f") + 1)))

try:
    chr(-1)
except ValueError as error:
    print(error)
Wynikzapisany wynik, możesz go sprawdzić
abcdef
chr() arg not in range(0x110000)

Dobre praktyki

#
  • Do sprawdzania, czy znak jest literą albo cyfrą, używaj metod isalpha() i isdigit() zamiast porównywania kodów. Działają też dla polskich liter.
  • Znak o znanym kodzie wpiszesz też wprost w napisie: "\u0105" to "ą".
  • Wszystkie małe litery alfabetu łacińskiego zawiera gotowa stała string.ascii_lowercase, bez potrzeby używania chr().

Powiązane hasła

#

Widzisz błąd albo brakuje przykładu? Napisz do nas.