zoukankan      html  css  js  c++  java
  • 表示数值的字符串(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()函数

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

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

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

    ss=s.split('e')

    if len(ss)>2:

        retutn False

    如果含e量等于1

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

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

    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次方

    三,代码

  • 相关阅读:
    C#-------------枚举
    C#-------------类型构造器
    C#-内存天下
    线程在C#中的使用
    C#遗忘笔记--品味类型
    二分查找算法(C#实现)
    Linq 表达式树
    javascript中的对象
    this绑定的顺序
    弹出对话框
  • 原文地址:https://www.cnblogs.com/buyaodong/p/13187035.html
Copyright © 2011-2022 走看看