maximum = max(1, 1.25, 3.14, 'a', 1000)
- 为什么要给'a'
作为答案?不应该'a'
转换为ASCII并进行检查吗?
maximum = max(1, 2.15, "hello")
以"hello"
作为答案。这个答案是怎么来的?
答案 0 :(得分:12)
来自documentation -
CPython实现细节:除了数字之外的不同类型的对象按其类型名称排序;不支持正确比较的相同类型的对象按其地址排序
因此str
始终大于int
。
更多示例 -
>>> class test:
... pass
...
>>> t = test()
>>> 'a' > 5
True
>>> t > 'a'
False
>>> type(t)
<type 'instance'>
>>> t > 10
False
>>> type(True)
<type 'bool'>
>>> True > 100
False
>>> False > 100
False
请注意test
类'对象的类型名称为instance
,这就是t > 5
为False
的原因。
答案 1 :(得分:8)
因为Python 2中的字符串总是大于数字。
>>> "a" > 1000
True
在Python3中它实际上是修复,它们现在是无法比拟的(因为实际上没有办法比较42和“狗”)。