xiaomei47580 发表于 2020-3-22 11:50:13

字符串为什么不能比较大小?

先来看看原来的代码num1 = input("请输入一个整数")
num2 = input("请输入第二个整数")

if num1 < num2:
    print("第一个数比第二个数小!")

if num1 > num2:
    print("第一个数比第二个数大!")

if num1 == num2:
    print("两个数一样大!")“这其中有一个致命BUG”指的是input接受用户数据之后没有用int()改成整数,可我跑了几次,发现这个源代码没有什么问题,可以比较整数小数甚至中文简体数字,那么这究竟是为什么呢?真的有必要加上int()吗?

这是官方答案:num1 = int(input("请输入第一个整数:"))
num2 = int(input("请输入第二个整数:"))

if num1 < num2:
    print("第一个数比第二个数小!")

if num1 > num2:
    print("第一个数比第二个数大!")

if num1 == num2:
    print("第一个数和第二个数一样大!")

sunrise085 发表于 2020-3-22 12:03:16

第一个程序比较的是字符串的大小,字符串大小是以ASCII比较的,'25'>'21'   '123'<'52'
第二个程序才是比较数字的大小,int()是把一个字符串编程int类型,若你输入的内容还有除了数字以外的字符,就会报错(第一个字符可以是+或者-)。

jackz007 发表于 2020-3-22 12:10:31

      谁说不能直接比较字符串?
>>> a = 'ABC'
>>> b = 'ABD'
>>> a > b
False
>>> a < b
True
>>> a = '123'
>>> b = '234'
>>> a > b
False
>>> b > a
True
>>>

xiaomei47580 发表于 2020-3-22 12:14:57

就很懵,字符串的比较和数字的比较难道不一样吗?

xiaomei47580 发表于 2020-3-22 12:15:50

而且字符串还可以输入中文简体数字,还多支持一种语言耶?

永恒的蓝色梦想 发表于 2020-3-22 12:18:28

xiaomei47580 发表于 2020-3-22 12:15
而且字符串还可以输入中文简体数字,还多支持一种语言耶?

是的,多支持一种语言,而且'123'还小于'78'呢

xiaomei47580 发表于 2020-3-22 13:18:56

永恒的蓝色梦想 发表于 2020-3-22 12:18
是的,多支持一种语言,而且'123'还小于'78'呢

???为什么啊

永恒的蓝色梦想 发表于 2020-3-22 13:35:10

xiaomei47580 发表于 2020-3-22 13:18
???为什么啊

因为字符串不是数字

TJBEST 发表于 2020-3-22 13:38:14

字符串比较的是 不是asc-2码 而是UNICODE码 你可以ord函数来查询每一个字符的Unicode码
比如 '123' 在 内存中 存储的是 三个数字的Unicode码 49 50 51
'89'存储的是 56 57 对于序列是根据逐项比大小的 第一项 49 < 56
所以'123'<'89'

xiaomei47580 发表于 2020-3-22 20:38:17

哇塞?!就是给每个数字增加一个属性然后进行对比是吗?

vincent009 发表于 2020-3-22 20:47:54

字符串有拼接和重复操作符,没有比较大小的功能
页: [1]
查看完整版本: 字符串为什么不能比较大小?