这两天在学习函数,练习写一个判断是否为小数的函数,看起来蛮简单的,飞速写完很是得意,然后测了一下,发现差得好多呀,这个并不像想象那样简单,我得到的教训是,想要把一个需求哪怕再小的需求考虑周全,都不是件简单的事。

我的路还很长,但千里之行始于足下,努力学习,不断总结,持续提高,做自己喜欢做的事,享受快乐 ……

# 写一个判断是小数的函数
def is_float(s):
s = str(s)
if s.count('.') == 1:
s_left = s.split('.')[0]
s_right = s.split('.')[1]
if s_left.isdigit() and s_right.isdigit():
return True
elif s_left.startswith('-')and s_left.count('-') == 1 and s_right.isdigit():
if s_left.split('-')[1].isdigit():
return True
return False # 下面的代码和以上相同,是加了注释的 ^_^
def is_float(s):
s = str(s) # 强制转化操作是因为传进来的被判断对象的类型具有不确定性,你需要将其统一在一个起点进行处理。
if s.count('.') == 1: # 小数的首要前提就是有且只有一个小数点。
s_left = s.split('.')[0] # 以小数点为分界点把字符串拆成左右两部分以备进一步分析。
s_right = s.split('.')[1]
if s_left.isdigit() and s_right.isdigit(): # 小数点左右都是纯的正整数,一个标准的正小数情况。
return True
elif s_left.startswith('-')and s_left.count('-') == 1 and s_right.isdigit():
# 负小数情况稍复杂,首先以负号开头,排除多个负号情况,同时小数点右侧是纯的正整数,在此情况下,
if s_left.split('-')[1].isdigit(): # 小数点左侧负号身后的部分如果是正整数字符,是个合法的负小数
return True
return False
# 除了以上正小数和负小数两种合法的情况外,其它均是不合法情况,上边的判断路线也走不进去,直接返回False结束。
# 而当符合上面的任何条件都会判断是合法小数,返回True结束程序,也走不到最后的return False这个语句。
# 所以不用看到程序最后一句是 return False 而担心。 # 以下是检测上面函数的用例,有没包含的情况吗?
print(is_float(123.456))
print(is_float(-123.456))
print(is_float(123))
print(is_float(-123))
print(is_float('123.45.6'))
print(is_float('123.4a'))
print(is_float('123a.456'))
print(is_float('-1-23.456'))
print(is_float(.456))
print(.456)  # 0.456
print(is_float(-.456))
print(-.456)  # -0.456
print(is_float('..456'))
print(is_float(--123))
print(--123) # 123 是整数
print(is_float(--.456))
print(--.456) # 0.456 是小数
print(is_float(''))

Python_代码练习_写一个判断是否为小数的函数的更多相关文章

  1. python 拼写检查代码(怎样写一个拼写检查器)

    原文:http://norvig.com/spell-correct.html 翻译:http://blog.youxu.info/spell-correct.html 怎样写一个拼写检查器 Pete ...

  2. 十行代码--用python写一个USB病毒 (知乎 DeepWeaver)

    昨天在上厕所的时候突发奇想,当你把usb插进去的时候,能不能自动执行usb上的程序.查了一下,发现只有windows上可以,具体的大家也可以搜索(搜索关键词usb autorun)到.但是,如果我想, ...

  3. 80行代码教你写一个Webpack插件并发布到npm

    1. 前言 最近在学习 Webpack 相关的原理,以前只知道 Webpack 的配置方法,但并不知道其内部流程,经过一轮的学习,感觉获益良多,为了巩固学习的内容,我决定尝试自己动手写一个插件. 这个 ...

  4. Linux usb子系统(一) _写一个usb鼠标驱动

    USB总线是一种典型的热插拔的总线标准,由于其优异的性能几乎成为了当下大小设备中的标配. USB的驱动可以分为3类:SoC的USB控制器的驱动,主机端USB设备的驱动,设备上的USB Gadget驱动 ...

  5. php写一个判断是否有cookie的脚本

    前言: 刚刚学习完cookie函数,写个练习. 0x01: //其实第二个应该改为elseif,但是我懒.啊哈 <?php $vlas="BnJhiFoPS4"; if(is ...

  6. python写一个信息收集四大件的脚本

    0x0前言: 带来一首小歌: 之前看了小迪老师讲的课,仔细做了些笔记 然后打算将其写成一个脚本. 0x01准备: requests模块 socket模块 optparser模块 time模块 0x02 ...

  7. 自己动手写一个U盘拷贝小工具

    这是五一期间,参照知乎上一篇的文章<十行代码--用python写一个USB病毒>写成的,最初只是单纯的想写成死循环,直到文件占满硬盘为止,第一个遇到的问题是,拷贝到硬盘之后,由于要无限次拷 ...

  8. 自动化测试(二)如何用python写一个用户登陆功能

    需求信息: 写一个判断登录的程序: 输入: username password 最大错误次数是3次,输入3次都没有登录成功,提示错误次数达到上限 需要判断输入是否为空,什么也不输入,输入一个空格.n个 ...

  9. 自己写一个java的mvc框架吧(二)

    自己写一个mvc框架吧(二) 自己写代码的习惯 写一个框架吧,如果这个框架会用到一些配置上的东西,我自己习惯是先不用考虑这个配置文件应该是怎样的,什么形式的,先用一个java对象(比如叫 Config ...

随机推荐

  1. 18.VUE学习之-v-for操作对象与数值

    一组数组时的循环 二组数组时的循环 另外可以v for 20 可以直接操作数字 <!DOCTYPE html> <html lang="en"> <h ...

  2. Python Map, Filter and Reduce

    所属网站分类: python基础 > 函数 作者:慧雅 原文链接: http://www.pythonheidong.com/blog/article/21/ 来源:python黑洞网 www. ...

  3. python3 爬取汽车之家所有车型数据操作步骤(更新版)

    题记: 互联网上关于使用python3去爬取汽车之家的汽车数据(主要是汽车基本参数,配置参数,颜色参数,内饰参数)的教程已经非常多了,但大体的方案分两种: 1.解析出汽车之家某个车型的网页,然后正则表 ...

  4. VScode的settings.json配置

    { "editor.mouseWheelZoom": true, "astyle.additional_languages": [ "c", ...

  5. 如何使用DroidPlugin——DroidPlugin初体验

    最近研究了下360的黑科技--DroidPlugin 刚开始不知道怎么用,于是看了这篇博客:http://www.jianshu.com/p/f1217cce93ef  算是引导了我,于是开始自己写写 ...

  6. thinkpad alert键一直处于按着的状态

    就是alert 一直默认按着的,具体原因,我还没有见过. 但是解决方法很简单,crlt+alert一块按,就好了.

  7. TCP/IP网络编程之地址族与数据序列

    分配IP地址和端口号 IP是Internet Protocol(网络协议)的简写,是为收发网络数据而分配给计算机的值.端口号并非赋予计算机的值,而是为区分程序中创建的套接字而分配给套接字的序号 网络地 ...

  8. loj2065 「SDOI2016」模式字符串

    ref不是太懂 #include <iostream> #include <cstring> #include <cstdio> using namespace s ...

  9. 【Distinct Subsequences】cpp

    题目: Given a string S and a string T, count the number of distinct subsequences of T in S. A subseque ...

  10. IOS开发学习笔记043-QQ聊天界面实现

    QQ聊天界面实现 效果如下: 实现过程: 1.首先实现基本界面 头像使用 UIImageView : 文字消息使用 UIButton 标签使用 UILable :水平居中 所有元素在一个cell中,在 ...