[5 min python] 內建函數 - chr()

更新 發佈閱讀 6 分鐘

Python「內建函數」(built-in functions)就是不用 import,隨時可以直接呼叫的函數,像 print()、len()、range() 這些,都算。

chr():把數字變成對應的字元

chr() 接收一個整數(Unicode 碼位),回傳對應的字元。

語法:

chr(i)  # i 是 0 ~ 1114111 之間的整數

基本用法:

print(chr(65))    # A
print(chr(97))    # a
print(chr(48))    # 0
print(chr(9731))  # ☃(雪人符號)

數字 65 對應大寫 A,97 對應小寫 a,48 對應字元 '0'。這些都是 Unicode 標準定義好的。

搭配 ord() 互相轉換

chr() 和 ord() 是一對互逆函數。ord() 把字元變數字,chr() 把數字變字元:

print(ord('A'))        # 65
print(chr(65))         # A
print(chr(ord('A')))   # A(轉回來)
print(ord(chr(65)))    # 65(轉回來)

記住:chr() 和 ord() 永遠互為反函數,chr(ord(c)) == c,ord(chr(n)) == n。

用 chr() 產生字母序列

因為英文字母在 Unicode 中是連續的,可以用 chr() 搭配 range() 來產生字母:

# 產生 A ~ Z
uppers = [chr(i) for i in range(65, 91)]
print(uppers)
# ['A', 'B', 'C', ..., 'Z']

# 產生 a ~ z
lowers = [chr(i) for i in range(97, 123)]
print(lowers)
# ['a', 'b', 'c', ..., 'z']

不用死背數字,記得 ord('A') == 65、ord('a') == 97 就好,或是直接用 ord() 算起始值。

chr() 處理中文和特殊符號

chr() 不只能處理英文,任何 Unicode 字元都可以:

print(chr(20320))   # 你
print(chr(22909))   # 好
print(chr(128522))  # 😊(表情符號)
print(chr(9829))    # ♥(愛心)

Python 3 的字串原生就是 Unicode,所以 chr() 可以直接輸出各國文字和 emoji。

chr() 的範圍限制

chr() 只接受 0 到 1114111(0x10FFFF)之間的整數,超出範圍會報錯:

print(chr(0))         # \x00(空字元,不會顯示)
print(chr(1114111))   # 最大的 Unicode 碼位

# chr(1114112)  # ValueError: chr() arg not in range(0x110000)
# chr(-1)       # ValueError: chr() arg not in range(0x110000)

小小綜合例子

來做一個簡單的凱撒密碼加密器,用 chr() 和 ord() 把字母往後移動 N 位:

# 凱撒密碼加密器
def caesar_encrypt(text, shift):
    result = []
    for c in text:
        if c.isalpha():
            base = ord('A') if c.isupper() else ord('a')
            encrypted = chr((ord(c) - base + shift) % 26 + base)
            result.append(encrypted)
        else:
            result.append(c)
    return ''.join(result)

message = 'Hello, Python!'
shift = 3

encrypted = caesar_encrypt(message, shift)
print(f'原文:{message}')
print(f'加密(位移 {shift}):{encrypted}')
# 輸出:
# 原文:Hello, Python!
# 加密(位移 3):Khoor, Sbwkrq!

# 解密就是反向位移
decrypted = caesar_encrypt(encrypted, -shift)
print(f'解密:{decrypted}')
# 輸出:
# 解密:Hello, Python!
留言
avatar-img
艾利斯幻想旅程
5會員
467內容數
網路世界是一個充滿多元性與無限可能的空間,人們可以在此分享資訊、交流思想,並展現無盡的創造力。然而,隨著社交媒體和線上論壇的普及,一種有趣且獨特的現象也隨之興起——廢文。廢文指的是那些內容看似無聊、無害,或表面上毫無意義的帖子、留言或圖片,通常目的在於娛樂或逗趣,而非提供實質價值的資訊。
艾利斯幻想旅程的其他內容
2026/02/21
Python「內建函數」(built-in functions)就是不用 import,隨時可以直接呼叫的函數,像 print()、len()、range() 這些,都算。 all():全部為真才回傳 True 語法: all(iterable) all() 會檢查可迭代物件中是否「全部」元
2026/02/21
Python「內建函數」(built-in functions)就是不用 import,隨時可以直接呼叫的函數,像 print()、len()、range() 這些,都算。 all():全部為真才回傳 True 語法: all(iterable) all() 會檢查可迭代物件中是否「全部」元
2026/02/21
Python「內建函數」(built-in functions)就是不用 import,隨時可以直接呼叫的函數,像 print()、len()、range() 這些,都算。 any():任一為真就回傳 True 語法: any(iterable) any() 會檢查可迭代物件中是否「至少有一
2026/02/21
Python「內建函數」(built-in functions)就是不用 import,隨時可以直接呼叫的函數,像 print()、len()、range() 這些,都算。 any():任一為真就回傳 True 語法: any(iterable) any() 會檢查可迭代物件中是否「至少有一
2026/02/21
Python「內建函數」(built-in functions)就是不用 import,隨時可以直接呼叫的函數,像 print()、len()、range() 這些,都算。 map():對每個元素套用函數 語法: map(function, iterable, *iterables) map
2026/02/21
Python「內建函數」(built-in functions)就是不用 import,隨時可以直接呼叫的函數,像 print()、len()、range() 這些,都算。 map():對每個元素套用函數 語法: map(function, iterable, *iterables) map
看更多