一文彻底搞懂:Python 字符串比较的本质 —— 字符编码与大小判断
·
很多刚学 Python 的同学在遇到字符串比较时都会困惑:为什么 "watermelon" > "strawberry" 结果是 True?为什么 "apple" < "banana"?字母到底是按什么规则比大小的?
这篇文章就从字符编码出发,把 Python 字符串比较的底层逻辑、判断规则、常用函数一次性讲透,看完你再也不会踩坑。
一、字符串比较的本质:比的不是长度,是「编号」
Python 里两个字符串比较大小(>、<、==、>=、<=),不是比长度,也不是比单词含义,而是在比每个字符的编号。
这个编号官方名字叫:Unicode 编码(兼容最经典的 ASCII 编码)。
简单理解:计算机不认识字母、数字、符号,只认识数字。所以人类给每个字符分配了一个唯一的数字编号,这个编号就是字符在计算机里的 “身份证号”。
字符串比较 = 逐个字符对比「身份证号」 → 编号大的字符更大。
二、最常用字符编码表(背会直接起飞)
日常编程 99% 的场景,只需要记住下面这张表:
表格
| 字符类型 | 编码范围 | 重要示例 |
|---|---|---|
| 数字 0~9 | 48 ~ 57 | '0'=48,'9'=57 |
| 大写字母 A~Z | 65 ~ 90 | 'A'=65,'B'=66 … 'Z'=90 |
| 小写字母 a~z | 97 ~ 122 | 'a'=97,'b'=98 … 'z'=122 |
三个黄金规律(考试、刷题必用)
- 数字 < 大写字母 < 小写字母48~57 < 65~90 < 97~122
- 同一类字符按顺序递增
'a' < 'b' < ... < 'z''A' < 'B' < ... < 'Z''0' < '1' < ... < '9' - 大小写相差 32小写字母编码 = 大写字母编码 + 32例:
'A'=65 →'a'=97
三、两个神器函数:ord () 和 chr ()
Python 提供了两个内置函数,让你直接查看 / 转换字符编码:
1. ord (字符) → 查编号
print(ord('a')) # 97
print(ord('s')) # 115
print(ord('w')) # 119
print(ord('A')) # 65
print(ord('0')) # 48
2. chr (编号) → 查字符
print(chr(97)) # 'a'
print(chr(65)) # 'A'
print(chr(48)) # '0'
这两个函数是理解字符串比较的核心钥匙。
四、字符串比较的完整规则(详细版)
Python 比较两个字符串时,遵循字典序:
- 从左到右逐个字符对比
- 只要某一位分出大小,立刻停止,不再看后面
- 完全一样才返回 True
举个真题例子:
a = "watermelon"
b = "strawberry"
print(a > b) # 结果是?
一步一步判断:
- 取第一个字符:
a[0] = 'w',编号 119b[0] = 's',编号 115 - 比较编号:119 > 115 →
True - 直接得出结论:
a > b → True
后面的字符根本不用看!
五、更多经典对比示例(帮你彻底巩固)
# 数字 < 大写 < 小写
print('0' < 'A') # True 48 < 65
print('A' < 'a') # True 65 < 97
# 同类型按顺序
print('a' < 'b') # True
print('s' < 'w') # False
print('Apple' < 'Banana') # True
# 字符串长短不影响!
print("a" < "aaaaaaa") # True 只比第一位
六、实战应用:用编码判断字符类型
学会编码后,你可以不用任何库,直接判断字符类型:
1. 判断是否小写字母
c = 'm'
if 97 <= ord(c) <= 122:
print("小写字母")
2. 判断是否大写字母
c = 'M'
if 65 <= ord(c) <= 90:
print("大写字母")
3. 判断是否数字
c = '5'
if 48 <= ord(c) <= 57:
print("数字字符")
七、进阶:利用编码实现大小写转换
虽然 Python 有 upper()、lower(),但理解底层更重要:
# 小写 → 大写
c = 'a'
upper_c = chr(ord(c) - 32)
print(upper_c) # 'A'
# 大写 → 小写
c = 'A'
lower_c = chr(ord(c) + 32)
print(lower_c) # 'a'
原理就是:大小写编码差固定为 32。
八、超简总结(建议收藏)
- Python 字符串比大小 = 逐个字符比Unicode/ASCII 编号
- 顺序固定:数字 < 大写字母 < 小写字母
- 小写字母 = 大写字母 + 32
ord(字符)查编号,chr(编号)查字符- 比较规则:从左到右,一位定胜负,不看长度
只要记住这几句话,所有字符串比较的题目、代码、坑点,你都能一眼看穿。
更多推荐



所有评论(0)