【问题标题】:Why is print('a' > 'b') False and print('a' > 'A') True?为什么 print('a' > 'b') 为假而 print('a' > 'A') 为真?
【发布时间】:2020-05-04 23:20:48
【问题描述】:
当我们执行程序 print('a' > 'b') 时,它给出的答案是 False。
当我们执行程序 print('a' > 'A') 时,它给出的答案是 True。
请帮我详细解释一下。
【问题讨论】:
标签:
python-3.x
output
ascii
【解决方案1】:
当使用< 或> 比较字符时,它会将其转换为整数。
根据ASCII Table
意思:
- a 是十进制的 97
- b 是十进制的 98
- A 是十进制的 65
- B 是十进制的 66
为此:
print('a' > 'b') 为假,因为print(97 > 98)
然后:
print('a' > 'A') 为真,因为print(97 > 65)
【解决方案2】:
请检查字符的ASCII码。
你也可以用python检查一下
>>> ord('a')
97
>>> ord('b')
98
>>> ord('A')
65
同样,反过来也可以得到
>>> chr(97)
'a'
>>> chr(98)
'b'
>>> chr(65)
'A'
【解决方案3】:
首先,查看ASCII table,您可以在其中找到所有标准字符的数字映射。
您是否看到'a'、'b'和'A'的值?
'a' == 97
'b' == 98
'A' == 65
这就是为什么 ('a' > 'b') 为假 而 ('a' > 'A') 为真。
【解决方案4】:
这是因为在ASCII (American Standard Code For Information Interchange) CHART 上,字母“a”等于 97(十进制值),而字母“b”等于 98(十进制值)。
因此,当您输入 print('a' > 'b') 时,Python 会比较上述十进制值并回复 "FALSE",因为实际上只是比较字面意义上的 97 to 98。 print('a' > 'A') 也是如此,它将比较 97 to 65;为什么你会得到"TRUE."