字符串为什么不能比较大小?
先来看看原来的代码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("第一个数和第二个数一样大!") 第一个程序比较的是字符串的大小,字符串大小是以ASCII比较的,'25'>'21' '123'<'52'
第二个程序才是比较数字的大小,int()是把一个字符串编程int类型,若你输入的内容还有除了数字以外的字符,就会报错(第一个字符可以是+或者-)。 谁说不能直接比较字符串?
>>> 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:15
而且字符串还可以输入中文简体数字,还多支持一种语言耶?
是的,多支持一种语言,而且'123'还小于'78'呢 永恒的蓝色梦想 发表于 2020-3-22 12:18
是的,多支持一种语言,而且'123'还小于'78'呢
???为什么啊 xiaomei47580 发表于 2020-3-22 13:18
???为什么啊
因为字符串不是数字 字符串比较的是 不是asc-2码 而是UNICODE码 你可以ord函数来查询每一个字符的Unicode码
比如 '123' 在 内存中 存储的是 三个数字的Unicode码 49 50 51
'89'存储的是 56 57 对于序列是根据逐项比大小的 第一项 49 < 56
所以'123'<'89' 哇塞?!就是给每个数字增加一个属性然后进行对比是吗? 字符串有拼接和重复操作符,没有比较大小的功能
页:
[1]