Python中字符和数字之间是怎么比较大小的

发布网友 发布时间:2022-04-23 15:28

我来回答

3个回答

热心网友 时间:2022-04-06 15:49

任何两个对象都可以比较
相同类型的对象(实例),如果是数字型(int/float/long/complex),则按照简单的大小来比较;如果是非数字型,且类(型)中定义了__cmp__(含__gt__,__lt__等)则按照__cmp__来比较,否则按照地址(id)来比较
不同类型的对象(实例),如果其中一个比较对象是数字型(int/float/long/complex等),则数字型的对象<其它非数字型的对象;如果两个都是非数字型的对象,则按照类型名的顺序比较,如{} < "abc"(按照"dict" < "str"),而"abc" > [1,2], "abc" < (1,2)。
对于自定义的类(型)实例,如果继承自基本类型,则按照基本类型的规则比较(1-3)。否则,old-style class < new-style class, new-style class之间按照类型名顺序比较,old-style class之间按照地址进行比较
bool类型是int的子类,且True=1, False=0,比较时按照1-4来比较,如True > -1, True < 4.2, True < "abc"等
上面的回答是针对Python2.x,3.x的有较大的变化,如str和int比较时会抛出异常等。

回到题目,字符和数字的比较符合规则3,所以数字<字符。举个例子,如100和'a'(ord('a')=97),有
100<'a'

热心网友 时间:2022-04-06 17:07

如果要比较大小,得看你比的是什么。
举例:a=‘12’要与b=12比较大小,如果你不强转,无法比较,因为数据类型不同。强转的话,就将字符串强转为数字类型,也就是int(a),之后就可以比较。但是,如果你要比较a='12'和b=12的长短,比的就是字符数量。先将12强转,str(b),再将两个字符串的字数计算出来,用两个变量接受,如a1=len(a) b1=len(b),这样长度就出来了,再去比较即可。

热心网友 时间:2022-04-06 18:42

python2 不同类型的值只保证永远不相等。objects of different
types always compare unequal, and are ordered consistently but arbitrarily.


python3 这样比较会因为类型不同而报错。

>>> "abc" > 123
Traceback (most recent call last):
  File "<stdin>", line 1, in <mole>
TypeError: unorderable types: str() > int()

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com