python - 判断输入的字符串是否可以转化为浮点数

Python 正则表达式 | 菜鸟教程

今天仍然继续浮点数,上午写出来了,十进制下对2乘除。但最初就搞错了些东西。
下午看到一篇以二进制的角度转换浮点数存储的文章,哇!虽然里面仍有些奇怪的地方。
打算照着那篇再码出来,现在十点多了,告一段落对输入字符是否可以转换为浮点数的判断,挺长挺乱的!

import re

while 1:
    num = str(input("输入一个数,显示其浮点数在二进制中的存储:"))

    if ((not re.compile("[^0-9.\-+]+").findall(num)) \ #不包含这些以外的字符
            and re.compile("[0-9]+").findall(num) \ #必须包含数字
            and ((num.count("-") == 0 and num.count("+") == 0) \ #要么没正负号,要么有正号且在首位,要么有负号且在首位
                 or (num.count("+") == 0 and num.count("-") == 1 and num[0] == "-") \
                 or (num.count("-") == 0 and num.count("+") == 1 and num[0] == "+")) \
            and (num.count(".") == 0 or num.count(".") == 1)): #要么没小数点,要么有一个小数点
            print(1)
    else:
        print(0)

至于nan、inf、-inf很好处理,只要填在这个判断之前过一遍即可。

你可能感兴趣的:(python)