python数字转换成字符串比较大小_python中将数字字符串转化为数值类型再比较大小...

本文揭示了一个上线代码中的错误:使用字符串直接比较数字大小。原因是Python按字典顺序比较字符串,而非数值大小。解决方案包括使用内置的`int()`函数和自定义的`str2Number()`函数进行转换。通过自定义函数,可以处理非数字字符串并提供更灵活的异常处理。
摘要由CSDN通过智能技术生成

python中将数字字符串转化为数值类型再比较大小

问题背景错误原因解决办法第一种:使用系统自带的转化函数第二种:使用我的自定义函数

16进制字符串转化10进制数值类型

问题背景

在工作中,看到一个上线的python代码竟然隐藏了代码,大家来感受下这段代码:(为避免泄露商业信息我做了去除隐私处理)

if str1 > '30' and str1 < '5000' and str1 != '1000':

print("succs")

else:

print("fail")

我们将str1赋一个值进行一下测试,来看看这惊为天人的代码效果如何。

来上图,公开处刑:  我输入的是一个40000的字符串值,按理说是不包含在30到5000出去1000的范围内的。

这竟然是一个已经上线了的代码,开发和测试都干嘛去了。。。。。惊呆了。

错误原因

python虽然是很动态类型的语言,很好用,但是它还没智能到这个程度,一切字符串都是按照字典顺序进行比较的。所以“40000”第一个字符“4”比“30”第一个字符“3”大,比“5000”第一个字符“5”要小,且不等于“1000”的第一个字符“1”。所以成立。

解决办法

第一种:使用系统自带的转化函数

如: int(strparam) 函数

缺点:如果输入的strparam字符串包含字母或特殊字符将会直接报错,不能根据需求自己定制功能。

第二种:使用我的自定义函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值