python字符类型的表示_表示数值的字符串(python)

一,问题

请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。

二,分析

表示数值的:"+100" , "5e2" , "-123" , "3.1416","-1E-16"

不表示数值的:"12e" , "1a3.14" , "1.2.3" , "+-5","12e+4.3"

通过观察,

我们发现:第一,要能表示数值,里面的元素只能是‘0到9的数字’ 或者 ‘+ ,-号’ 或者 ‘小数点 . ’或者 ‘E,e ’ 只要出现除此以外的元素,就直接判定False

先全部转成小写 s=s.lower()

然后去遍历元素,看看有没有规定以外的元素出现

for i in s:

if i in ['+','-','e','.']

continue

if i <='9' and i >='0':

continue

else:

return False

第二,看含‘e’量

在这里先介绍一下split()函数

2065752-20200624121215819-1233966124.png

2065752-20200624121339454-320401333.png

我们看到,根据含e量的不同,可以简单判断出这个字符串是不是False

含e量大于等于2,切出来的长度一定大于等于3,直接False掉

含e量等于1或者0的,继续判断

ss=s.split('e')

if len(ss)>2:

retutn False

如果含e量等于1

则s被分成两端,分别看这两段含不含‘+,-’号,在第几位,‘+,-’号不在首位的都直接干掉

在这里介绍一下find()函数,资料来自菜鸟教程

2065752-20200624123252061-1365379002.png

if left_c.find("+") > 0:

return False

if left_c.find("-") > 0:

return False

if right_c.find("+") > 0:

return False

if right_c.find("-") > 0:

return False

第三 检查小数点

看左边的含点量,有两个或两个以上的小数点,直接干掉

lcc = left_c.split(".")

if len(lcc) > 2:

return False

看右边小数点有没有,有的话在不在首位。否则直接干掉

if right_c.find(".") > 0:

return False

return True

不含e时,比如‘1.2.3’或者‘+-5’

就要检查正负号在不在首位

小数点有没有多的

注意,12e+4是个数字,他表示12乘以10的4次方

2065752-20200624130908529-1556027741.png

三,代码

2065752-20200624130615979-852988737.png

2065752-20200624130625302-1305871815.png

2065752-20200624130643119-2068864871.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值