文章目录

一、小数保留指定位小数

很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:101677771

1.%f 方法

f = 1.23456
f1 = '%.4f' % f
f2 = '%.2f' % f
print(f1,type(f1))
print(f2,type(f2))

打印

1.2346 <class 'str'>
1.23 <class 'str'>

易知,这种方法会进行四舍五入,但是将浮点型转化成了字符串值,已不再是原始的数值。

2.format函数

f = 1.23456
f1 = format(f,'.4f')
f2 = format(f,'.2f')
print(f1,type(f1))
print(f2,type(f2))

打印

1.2346 <class 'str'>
1.23 <class 'str'>

同理,这种方法也会进行四舍五入,但是将浮点型转化成了字符串值,已不再是原始的数值。

3.round()函数

a = 1.23456
b = 2.355
c = 3.5
d = 2.5
a1 = round(a, 3)
b1 = round(b, 2)
c1 = round(c)
d1 = round(d)
print(a1,type(a1))
print(b1,type(b1))
print(c1,type(c1))
print(d1,type(d1))

打印

1.235 <class 'float'>
2.35 <class 'float'>
4 <class 'int'>
2 <class 'int'>

可以看出,round()函数最后得到的是数值(浮点型或整型),但是在“舍”和“入”的规律上不一定:
(1)round(x,n)函数中,是否进位或四舍五入,取决于n位以及n+1位小数的值
(2)只有当n+1位数字是5的时候,容易混淆,如果n为偶数,则n+1位数是5,则进位,例如round(1.23456,3)最终变为1.235
(3)如果n为奇数,则n+1位是数5,那不进位,例如round(2.355,2),最终为2.35
(4)如果n为0,即没有填写n的时候,最终结果与上面相反,即整数部分为偶数的时候,小数位5不进位,例如(round(2.5)变为2)。
(5)整数部分为奇数的时候,小数位5进位。(round(3.5)变为4)

4.直接截断

a = int(1.23456 * 1000) / 1000
print(a)

打印1.234
这种方法简单粗暴,直接去掉后边的,不管是否大于5。

二、判断变量的数据类型的两种方法

1.type():

a = 1.23
print(type(a))

打印<class 'float'>

2.isinstance()

原型为isinstance(x, A_tuple)

a = 1.23
tp = isinstance(a,float)
print(tp)

打印True

三、python中的类方法(@classmethod)

python做面向对象编程时候,经常需要使用classmethod的描述。类方法特别容易弄混淆,因为听起来就好像“类中的方法”一样。
类方法也算一种实用的技巧,简单描述之:“类方法让类模板具有记忆力”。
类模板就是我们所定义的类。在普通情况下,不使用类方法对类进行实例化,类本身是不具有记忆性的。只是当一个静态模板被套用多次而已。如果我们想让类在每一次实例化之后,都能记载一些记忆,会对很多操作很有用。

class Man:
id = 0 # 类变量
def __init__(self, name):
self.name = name
self.id = self.id_number() @classmethod
def id_number(cls):
cls.id += 1
return cls.id a = Man('A')
print(a.id)
b = Man('B')
print(b.id)

打印

1
2

对Man这个类进行实例化2次,每个实例的id都不一样。这就依靠类方法来实现了:首先,用@classmethod描述类方法,然后用"cls"代表本类。类方法对类属性进行的处理是有记忆性的。

需要注意的是,类方法处理的变量一定要是类变量。因为在类方法里你用不了self来寻址实例变量,所以需要把类变量放到最前面描述,如上面的"id=0"所示。类变量是可以被self访问的,所以,在类变量定义好了以后,不需要在_init_函数里对类变量再一次描述。所以,上面代码里self.id不一定需要。

四、str.format与制表符\t关于中文对齐

str.format对字符串进行格式化,{:<x}的语法表示左对齐(>为右对齐,^为居中),少于x位自动补齐(默认为空格补齐),但是对于中文字符并不能很好地支持,所以会导致有多行中文字符串时出现不能对齐的现象,需要考虑到字符串所占长度并将中文字符串进行编码后再计算。

#name是包含中文的字符串,22是整个字符串一行的总长度,一般要顾及测试才能得到,\t后的x是一标记字符,可换为别的所需的字符串
print('[{string:<{len}}\tx'.format(string=string+']',len=22-len(string.encode('GBK'))+len(string)))

具体可参考https://blog.csdn.net/excaliburrr/article/details/76794451

五、遍历字典

Python3中:

d = {'x': 1, 'y': 2, 'z': 3}

1.遍历keys:

for k in d:
print(k)
print(d[key])

或者

for k in d.keys():
print(k)
print(d[key])

2.遍历values:

for v in d.values():
print(v)

3.遍历keys,values:

for k,v in d.items():
print(k)
print(v)

Python2中稍有区别,items()、keys()、values()换成iteritems()、iterkeys()、itervalues()。

六、datetime模块timedelta类的使用

timedelta对象表示连个不同时间之间的差值, 这个差值的单位可以是:天、秒、微秒、毫秒、分钟、小时、周。
如果使用time模块对时间进行算术运行,只能将字符串格式的时间 和 struct_time格式的时间对象 先转换为时间戳格式,然后对该时间戳加上或减去n秒,最后再转换回struct_time格式或字符串格式,这显然很不方便。而datetime模块提供的timedelta类可以让我们很方面的对datetime.date, datetime.time和datetime.datetime对象做算术运算,且两个时间之间的差值单位也更加容易控制。
datetime.timedelta类的定义:

class datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, hours=0, weeks=0)

所有参数都是默认参数,因此都是可选参数。参数的值可以是整数或浮点数,也可以是正数或负数。内部值存储days、seconds 和 microseconds,其他所有参数都将被转换成这3个单位:

  • 1毫秒转换为1000微秒
  • 1分钟转换为60秒
  • 1小时转换为3600秒
  • 1周转换为7天

然后对这3个值进行标准化,使得它们的表示是唯一的:

  • microseconds : [0, 999999]
  • seconds : [0, 86399]
  • days : [-999999999, 999999999]

类属性

类属性名称 描述
timedelta.min timedelta(-999999999)
timedelta.max timedelta(days=999999999, hours=23, minutes=59, seconds=59, microseconds=999999)
timedelta.resolution timedelta(microseconds=1)

实例方法和属性

实例方法/属性名称 描述
td.days 天 [-999999999, 999999999]
td.seconds 秒 [0, 86399]
td.microseconds 微秒 [0, 999999]
td.total_seconds() 时间差中包含的总秒数,等价于: td / timedelta(seconds=1)
方法/属性 描述
datetime.datetime.now() 返回当前本地时间(datetime.datetime对象实例)
datetime.datetime.fromtimestamp(timestamp) 返回指定时间戳对应的时间(datetime.datetime对象实例)
datetime.timedelta() 返回一个时间间隔对象,可以直接与datetime.datetime对象做加减操作
>>> import datetime
>>>
>>> datetime.timedelta(365).total_seconds() # 一年包含的总秒数
31536000.0
>>> dt = datetime.datetime.now()
>>> dt + datetime.timedelta(3) # 3天后
datetime.datetime(2020, 1, 22, 11, 17, 0, 214877)
>>> dt + datetime.timedelta(-3) # 3天前
datetime.datetime(2020, 1, 16, 11, 17, 0, 214877)
>>> dt + datetime.timedelta(hours=3) # 3小时后
datetime.datetime(2020, 1, 19, 14, 17, 0, 214877)
>>> dt + datetime.timedelta(hours=-3) # 3小时前
datetime.datetime(2020, 1, 19, 8, 17, 0, 214877)
>>> dt + datetime.timedelta(hours=3, seconds=30) # 3小时30秒后
datetime.datetime(2020, 1, 19, 14, 17, 30, 214877)

 

Python 编程开发 实用经验和技巧的更多相关文章

  1. 最经典25本Python编程开发电子书精粹

    Python开发者的哲学是“用一种方法,最好是只有一种方法来做一件事”.在设计Python语言时,如果面临多种选择,Python开发者一般会拒绝花俏的语法,而选择明确的没有或者很少有歧义的语法,具备更 ...

  2. 《软件自动化测试开发-Java和Python测试开发实用指南》出版了

    1.关于书中下载链接的问题:出现404,页面不存在 解答:大小写要区分,l和1不能弄错了 2.关于勘误,出现极个别漏子少字错字 解答:后续版本会改进,目前能理解就好了 ---------------- ...

  3. IT视频课程集(包含各类Oracle、DB2、Linux、Mysql、Nosql、Hadoop、BI、云计算、编程开发、网络、大数据、虚拟化

    马哥Linux培训视频课程:http://pan.baidu.com/s/1pJwk7dp Oracle.大数据系列课程:http://pan.baidu.com/s/1bnng3yZ 天善智能BI培 ...

  4. 翻译:《实用的Python编程》README

    欢迎光临 大约 25 年前,当我第一次学习 Python 时,发现 Python 竟然可以被高效地应用到各种混乱的工作项目上,我立即被震惊了.15 年前,我自己也将这种乐趣教授给别人.教学的结果就是本 ...

  5. 翻译:《实用的Python编程》InstructorNotes

    实用的 Python 编程--讲师说明 作者:戴维·比兹利(David Beazley) 概述 对于如何使用我的课程"实用的 Python 编程"进行教学的问题,本文档提供一些通用 ...

  6. iOS开发实用技巧—在手机浏览器头部弹出app应用下载提示

    iOS开发实用技巧—在手机浏览器头部弹出app应用下载提示 本文介绍其简单使用: 第一步:在本地建立一个访问的服务端.  打开本地终端,在本地新建一个文件夹,在该文件夹中存放测试的html页面.   ...

  7. Python自学编程开发路线图(文中有免费资源)

    Python核心编程 免费视频资源<Python入门教程>:http://yun.itheima.com/course/145.html Python 基础学习大纲 所处阶段 主讲内容 技 ...

  8. 【系列】Python编程思想(1):Python简介与开发环境搭建

    李宁老师的 开始学习.   本系列文章深入介绍了Python的各种技术,堪称是目前最全的Python教程.主要目的是让读者可以了解Python的各种核心技术,包括各种Python函数库.本教程使用Py ...

  9. iOS开发实用技巧—Objective-C中的各种遍历(迭代)方式

    iOS开发实用技巧—Objective-C中的各种遍历(迭代)方式 说明: 1)该文简短介绍在iOS开发中遍历字典.数组和集合的几种常见方式. 2)该文对应的代码可以在下面的地址获得:https:// ...

随机推荐

  1. rabbitMQ安装问题记录

    参考链接: rabbitmq国内镜像地址:https://www.newbe.pro/Mirrors/Mirrors-RabbitMQ/ https://www.zhihu.com/question/ ...

  2. Java和Scala容器转换

    参考:https://blog.csdn.net/dymkkj/article/details/77921573 Java和Scala互操作的一个重要的内容就是容器的转换,容器是一个语言的数据结构,表 ...

  3. python数据可视化编程实战PDF高清电子书

    点击获取提取码:3l5m 内容简介 <Python数据可视化编程实战>是一本使用Python实现数据可视化编程的实战指南,介绍了如何使用Python最流行的库,通过60余种方法创建美观的数 ...

  4. 【JZOJ4726】种花 题解(贪心+堆)

    题目大意:在一个长度为$n$的环型序列中取出$m$个数使这$m$个数的和最大,且要求这$m$个数互不相邻. ---------------------- 考虑维护$nxt$和$lst$,即一个数的前驱 ...

  5. SQL语句:在两个数据库间复制表结构和数据数据库

    一.如果两个数据库在同一台服务器上 1.复制表结构和数据:SELECT * INTO DatabaseB.dbo.TableB FROM DatabaseA.dbo.TableA 2.仅仅复制表结构: ...

  6. PHP 之 Composer 新手入门指南

    自2012年3月1日发布以来,Composer因提供了PHP迫切需要的东西:依赖项管理而广受欢迎.实际上,Composer是将所有第三方软件(例如CSS框架,jQuery插件等)引入你的项目的一种方法 ...

  7. node根据excel批量更名

    程序预览 index.js var xlsx = require('node-xlsx'); var fs = require('fs'); process.stdin.setEncoding('ut ...

  8. selenium WebDriverWait类等待机制的实现

    在自动化测试脚本的运行过程中,可以通过设置等待的方式来避免由于网络延迟或浏览器卡顿导致的偶然失败,常用的等待方式有三种: 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法 ...

  9. CSS品控与流程

    精通CSS意味着不仅能写出可用的标记和样式,还能让代码好阅读.方便移植.易维护. 1.外部代码质量:调试CSS 外部代理质量就是用户能体验到的最终结果.主要体现在几个方面. 正确性.CSS属性名都写对 ...

  10. 【Python笔记】2020年7月30日练习【汉诺塔游戏】

    学习教程:廖雪峰-Python教程-函数-递归函数 学习笔记: 实例代码如下: def move(n, a, b, c): if n == 1: print(a,'--->', c) else: ...