文章首发于知乎专栏,欢迎关注。

zhuanlan.zhihu.com/pythoncookb…

以下测试代码全部基于 Python3。

数字处理一般来说都比较简单,这篇文章主要介绍几个常见问题和常用函数。

取整和四舍五入

使用 int() 函数取整会直接丢弃小数位,不进行四舍五入。

In [4]: int(1.63)
Out[4]: 1复制代码

round() 函数会根据所带参数确定保留的小数位数,然后输出四舍五入后的结果。

In [6]: round(1.63)
Out[6]: 2In [7]: round(1.63, 1)
Out[7]: 1.6复制代码

精确的浮点数运算

浮点数计算最让我头疼的就是它的小误差,这种误差并不是每一次都会出现,有的时候想在页面上展示一个计算结果,突然发现这个结果变成了一大长串数字,然后还要修改代码,将这串数字格式化。

In [8]: a = 1.1In [9]: b = 1.2In [10]: a + b
Out[10]: 2.3In [11]: a = 4.2In [12]: b = 2.1In [13]: a + b
Out[13]: 6.300000000000001复制代码

如果想要避免这种情况可以使用 Decimal() 来进行精确计算,但这样的问题是会有一些性能上的损耗。

In [14]: from decimal import DecimalIn [15]: a = Decimal(2.1)In [16]: b = Decimal(4.2)In [17]: a + b
Out[17]: Decimal('6.300000000000000266453525910')In [18]: a = Decimal('2.1')In [19]: b = Decimal('4.2')In [20]: a + b
Out[20]: Decimal('6.3')复制代码

需要注意的是,传入的参数需要是字符串,有点奇怪。

随机数

用 random 来生成随机数,该模块还提供了很多 function,特别有用。

产生[0,1)之间的随机数。

random.random()

产生[min, max)之间的随机整数。 random.randint(min, max)

从可迭代对象中随机选取一个元素返回。

random.choice(iterable)

从可迭代对象中随机选取不重复的 k 个元素,以数组的形式进行返回。

random.sample(iterable, k)

在[start, stop)中以步长 step 进行步进,随机产生一个元素。

random.randrange(start, stop, step)

对序列进行原地随机打乱顺序,返回 None,一定要注意这是原地起作用的。

random.shuffle(l)

这里就不做具体演示了。

关于数字还有很多其他操作,比如格式化输出,二八十六进制整数的转换,复数运算等等,但都不是很复杂,有的可能也不常遇到。

未完待续。。。

Python3 CookBook | 数字处理相关推荐

  1. python3 cookbook中常遇问题的解答记录

    常遇问题与解答 数据结构与算法 将序列分解为单独的变量 解压可迭代对象赋值给多个变量 查找最大或最小的 N 个元素 字典的运算 查找两字典的相同点 序列中出现次数最多的元素 通过某个字段将记录分组 过 ...

  2. python if后面要不要加括号_Python装饰器兼容加括号与不加括号的写法

    使用Django的时候,我发现一个很神奇的装饰器:@login_required, 这是控制一个view的权限的,比如一个视图必须登录才可以访问,可以这样用: 1 2 3 4 @login_requi ...

  3. python后端开发学什么_零基础学Python,这是阿里Python8年开发经验写给你的学习路线图...

    今天给大家分享一位前辈整理的一个Python web学习路线.这位前辈由于有编程基础,所以采用了自学Python的方式.学完后主要做后端开发.希望对你有所启发. 整理的一个 python web 学习 ...

  4. 免费的编程中文书籍索引(2018第三版)

    之前我在 github 上整理了来一份:free-programming-books-zh_CN(免费的计算机编程类中文书籍). 截至目前为止,已经在 GitHub 收获了 40000 多的 star ...

  5. 看云电子书归档 2016.4

    (译) JSON-RPC 2.0 规范(中文版) Gitee 下载 Github 下载 SourceForge 下载 00后:移动互联网崛起新势力 Gitee 下载 Github 下载 SourceF ...

  6. 编写高效且优雅的 Python 代码

    Python 作为一门入门极易并容易上瘾的语音,相信已经成为了很多人 "写着玩" 的标配脚本语言.但很多教材并没有教授 Python 的进阶和优化.本文作为进阶系列的文章,从基础的 ...

  7. 零基础自学python-零基础如何自学python?

    零基础如何自学python?今天传智播客给大家分享一篇关于零基础学习python的路线,当然了也十分推荐想学习想就业python方向的同学来传智播客学习培训python python入门基础 编程语言 ...

  8. python学习路线--从入门到入土

    入门技术博客 进阶自己挑选 入门基础 Python入门相对容易又可以干很多事(网站,运维,数据,爬虫等),是一门方便的工具语言.2016年TIOBE排名显示Python已经名列第四,成为脚本语言之首. ...

  9. Python中的warnings模块详细阐述

    Python中的warnings模块详细阐述 异常和警告 warnings - 非致命提醒 警告类别 警告过滤器 默认警告过滤器 可用函数 生成警告 使用模式过滤 重复警告 其他消息传递函数 由于在读 ...

最新文章

  1. 为什么我们需要开源的系统芯片?
  2. 2014年:这些词都快被玩坏了
  3. [Hive_add_8] Hive 常用参数配置
  4. 进程间通信 —— 命名管道
  5. python用辗转相除法求最大公约数
  6. 【转】Javascript面向对象编程(二):构造函数的继承
  7. LeetCode 684. Redundant Connection
  8. JavaSE——Java介绍与环境变量简述
  9. 作为职场小白,除了要注意自身的言谈举止
  10. rsync 同步文件
  11. 系统无忧 Ghost XP SP3 快速装机版V2011.07
  12. 什么是EDM营销?EDM营销的优点是什么?
  13. 手写一个java爬虫,获取网页信息。
  14. New Year Snowmen((贪心)map+优先队列)
  15. iOS/iPhone 微信打开doc xls文件报错OfficeImportErrorDomain错误912 打不开文档
  16. 计算机网络dna,DNA计算
  17. 获取微信公众号历史文章列表页链接
  18. 简述人工神经网络的定义,简述神经网络算法
  19. NC 前端修改数据库的方法
  20. Android进阶知识(二十五):Bitmap简介及其高效加载

热门文章

  1. sqlyog设置自动补全_sqlyog智能提示如何设置?sqlyog智能提示设置流程介绍
  2. python debug工具_常用的 Python 调试工具,Python开发必读-乾颐堂
  3. python log函数_python要点-装饰器
  4. win10添加美式键盘_win10玩dnf卡顿,怎么解决?
  5. unicode_literals导致的UnicodeEncodeError
  6. html一级二级菜单,纯JS添加一级二级菜单的代码
  7. 用Python发送邮件
  8. android sqlite 类使用,Android SQLite编程详解(不使用SQLiteOpenHelper类)
  9. 转载-致IT同仁 —— IT人士常犯的17个职场错误
  10. PHP中文乱码的常见解决方法总结