当前位置: 首页 > news >正文

Python从菜鸟到高手(5):数字

1 基础知识

  Python语言与其他编程语言一样,也支持四则运算(加、减、乘、除),以及圆括号运算符。在Python语言中,数字分为整数和浮点数。整数就是无小数部分的数,浮点数就是有小数部分的数。例如,下面的代码是标准的四则运算表达式。

2 + 44 * 5 + 205.3 / 7(30 + 2) * 12

  如果要计算两个数的除法,不管分子和分母是整数还是浮点数,使用除法运算符(/)的计算结果都是浮点数。例如1/2的计算结果是0.5,2/2的计算结果是1.0。要想让Python解释器执行整除操作,可以使用整除运算符,也就是两个斜杠(//)。使用整除运算符后,1 // 2的计算结果是0,2 // 2的结果是1。

  整除运算符不仅能对整数执行整除操作,也能对浮点数执行整除操作,在执行整除操作时,分子分母只要有一个是浮点数,那么计算结果就是浮点数。例如,1.0 // 2的计算结果是0.0,2.0 // 2的结果是1.0。

  除了四则运算符外,Python还提供了两个特殊的运算符:%(取余运算符)和**(幂运算符)。取余运算符用于对整数和浮点数执行取余操作。例如,5 % 2的计算结果是1,而5.0 % 2的计算结果是1.0。从这一点可以看出,%和//类似,只要分子分母有一个是浮点数,计算结果就是浮点数。

  幂运算符用于计算一个数值的幂次方。例如,2 ** 3的计算结果是8,3.2 ** 2的计算结果是10.24。

  到现在为止,一共介绍了8个运算符,它们是圆括号((…))加(+)、减(-)、乘(*)、除(/)、整除(//)、取余(%)和幂运算符(**)。其中减号(-)也可以用于负号(一元运算符),所以现在涉及到9个运算符。既然涉及到这么多运算符,那么就有一个优先级的问题,也就是说,同一个表达式中包含有多个不同的运算符,需要先计算优先级高的运算符,如果优先级相同个,那么就按从左向右的顺序执行。

  这9个运算符的优先级顺序如下图所示。越靠前优先级越高,同一行的运算符的优先级相同。

https://img2.mukewang.com/5b8dfd6b00015a5011580640.jpg

  下面的代码演示了Python语言中运算符的使用方法,在编写Python代码时,应该注意运算符的优先级问题。

print(2 + 4)                        #  运算结果:6print(126 - 654)                    #  运算结果:-528print(6 + 20 * 4)                   #  运算结果:86print((20 + 54) * 30)               #  运算结果:2220print(1/2)                          #  运算结果:0.5print(1//2)                     #  运算结果:0print(3/2)                          #  运算结果:1.5print(3//2)                     #  运算结果:1print(4**3)                     #  运算结果:64print(3 + 5 * -3 ** 4 - (-5)**2)    #  运算结果:-427#  用变量操作数值x = 30
y = 50
k = 10.2print(x + y * k)                    #  运算结果:540.0

2 大整数

  对于有符号32位整数来说,可表示的最大值是2147483647(2^31 -1),可表示的最小值是-2147483648(-2^31),如果超过这个范围,有符号32位整数就会溢出。不过在Python语言中,可以处理非常大的整数,并不受位数限制。例如,下面表达式的输出结果就超出了32位整数的范围。

print(2 ** 35)      # 输出2的35次幂,输出结果是34359738368

  让我们再换个更大的数,看看会不会溢出。

print(2**630  * 100000)     # 2的630次幂再乘10万

  上面这行代码的输出结果如下:

445550841564667501820426914619169074696604346410992180720624269326101090547722401025968047980212050759633038044296328838934443820446820117016861457004122479321483854917994624031530682836582400000

  很显然,Python语言仍然可以正确处理2**630 * 100000的计算结果。因此,在Python语言中使用数字不需要担心溢出,因为Python语言可以处理非常大的数字,这也是为什么很多人使用Python语言进行科学计算和数据分析的主要原因之一。

3. 二进制、八进制和十六进制

  Python语言可以表示二进制、八进制和十六进制数。表示这3个进制的数,必须以0开头,然后分别跟着表示不同进制的字母。表示二进制的字母是b,表示八进制的字母是o(这是英文字母中小写的o,不要和数字0搞混了),表示十六进制的字母是x。因此,二进制数的正确写法是0b110011,八进制数的正确写法是0o56432,十六进制数的正确写法是0xF765A。

  除了这3种进制外,前面章节一直使用的是十进制。因此,Python语言一共可以表示4种进制:二进制、八进制、十进制和十六进制。Python语言提供了一些函数用于在这4种进制数之间进行转换。

  如果是从其他进制转换到十进制,需要使用int函数,该函数有两个参数,含义如下:

• 第1个参数:字符串类型,表示待转换的二进制、八进制或十六进制数。参数值只需要指定带转换的数即可,不需要使用前缀,如二进制直接指定11011,不需要指定0b11011。

• 第2个参数:数值类型,表示第1个参数值的进制,例如,如果要将二进制转换为十进制,第2个参数值就是2。

  int函数返回一个数值类型,表示转换后的十进制数。

  下面的代码将二进制数110011转换为十进制数,并输出返回结果。

print(int("110011",2))    // 输出结果:51

  如果要从十进制转换到其他进制,需要分别使用bin、oct和hex函数。bin函数用于将十进制数转换为二进制数;oct函数用于将十进制数转换为八进制数,hex函数用于将十进制数转换十六进制数。这3个函数都接收一个参数,就是待转换的十进制数。不过要注意,这3个函数的参数值也可以是二进制数、八进制数和十六进制数,也就是说,这3个函数可以在二进制、八进制、十进制和十六进制之间互转。厦门叉车出租公司电话多少

  下面的代码将十进制数54321转换为十六进制数,并输出转换结果。

print(hex(54321))       # 输出结果:0xd431

下面的代码演示了Python语言中二进制、八进制、十进制和十六进制数之间的转换。

print(0b110011)             # 输出二进制数print(0o123)                    # 输出八进制数print(0xF15)                    # 输出十六进制数print(bin(12))                  # 十进制转二进制,输出结果:0b1100print(int("10110",2))           # 二进制转十进制,输出结果:22print(int("0xF35AE",16))        # 十六进制转十进制,输出结果:996782print(hex(54321))               # 十进制转十六进制,输出结果:0xd431print(bin(0xF012E))         # 十六进制转二进制,输出结果:0b11110000000100101110print(hex(0b1101101))           # 二进制转十六进制,输出结果:0x6dprint(oct(1234))                # 十进制转八进制,输出结果:0o2322print(int("76532", 8))          # 八进制转十进制,输出结果:32090

程序运行结果如下图所示。

https://img4.mukewang.com/5b8dfd760001555b03000337.jpg

 

 

4 数字的格式化输出

  在输出数字时,有时需要对其进行格式化。例如,在输出12.34时,只希望保留小数点后1位数字,也就是12.3,或整数位按6位输出,不足前面补0,也就是000012.34。Python语言中提供了format函数用于对数字进行格式化。format函数有两个参数,含义如下:

• 第1个参数:要格式化的数字。

• 第2个参数:格式字符串。

  format函数的返回值就是数字格式化后的字符串。

  下面的代码演示了format函数在格式化数字方面的应用。

x = 1234.56789# 小数点后保留两位数,输出结果:'1234.57'print(format(x, '0.2f'))      
# 数字在12个字符长度的区域内右对齐,并保留小数点后1位数字,# 输出结果:'      1234.6'      print(format(x, '>12.1f'))          
# 数字在12个字符长度的区域内左对齐,并保留小数点后3位数字,紧接着输出20,# 输出结果:'1234.568     20'print(format(x, '<12.3f'), 20)# 数字在12个字符长度的区域内右对齐,并保留小数点后1位数字,数字前面补0,# 输出结果:'0000001234.6'print(format(x, '0>12.1f'))# 数字在12个字符长度的区域内左对齐,并保留小数点后1位数字,数字后面补0,# 输出结果:'1234.6000000'print(format(x, '0<12.1f'))# 数字在12个字符长度的区域内中心对齐,并保留小数点后2位数字,紧接着输出3,# 输出结果:'   1234.57   3'print(format(x, '^12.2f'),3)# 每千位用逗号(,)分隔,输出结果:1,234.56789print(format(x, ','))# 每千位用逗号(,)分隔,并保留小数点后2位数字,输出结果:1,234.57print(format(x, ',.2f'))# 用科学计数法形式输出数字,输出结果:1.234568e+03print(format(x, 'e'))# 用科学计数法形式输出数字,尾数保留小数点后2位数字,输出结果:1.23E+03print(format(x, '0.2E'))

程序运行结果如下图所示。

https://img.mukewang.com/5b8dfd7d0001d55e02880321.jpg

转载于:https://www.cnblogs.com/xyou/p/9589989.html

相关文章:

  • python中的None
  • eclipse 执行自带的maven命令无效
  • 【转载三】Grafana系列教程–Grafana的配置及运行
  • mysql 通过备份和binlog恢复数据
  • java类加载时机与过程
  • 设计模式走一遍---观察者模式
  • 我发起了一个 .Net 平台上的 产生式编程 开源项目 GP.Net
  • windows远程连接报:身份错误,函数不支持的解决办法
  • Docker 笔记(2):Dockerfile
  • promise原理就是这么简单
  • EXE文件执行过程中发生了什么?
  • MathExam小学一二年级计算题生成器V1.0
  • 建设银行无人银行开业,铁饭碗是属于程序员的
  • Java 集合系列-第八篇-Map架构
  • Redhat7.0下部署NFS服务器
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • 07.Android之多媒体问题
  • ES2017异步函数现已正式可用
  • nginx 配置多 域名 + 多 https
  • Quartz初级教程
  • vue学习系列(二)vue-cli
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 从输入URL到页面加载发生了什么
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 七牛云假注销小指南
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 用mpvue开发微信小程序
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • $.each()与$(selector).each()
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (2015)JS ES6 必知的十个 特性
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (十)c52学习之旅-定时器实验
  • (转)shell调试方法
  • (转)原始图像数据和PDF中的图像数据
  • (转载)从 Java 代码到 Java 堆
  • .Net MVC4 上传大文件,并保存表单
  • .NET 设计一套高性能的弱事件机制
  • .project文件
  • ??如何把JavaScript脚本中的参数传到java代码段中
  • @在php中起什么作用?
  • [ Linux 长征路第二篇] 基本指令head,tail,date,cal,find,grep,zip,tar,bc,unname
  • [20171106]配置客户端连接注意.txt
  • [android学习笔记]学习jni编程
  • [C/C++]_[初级]_[关于编译时出现有符号-无符号不匹配的警告-sizeof使用注意事项]
  • [CF]Codeforces Round #551 (Div. 2)
  • [delphi]保证程序只运行一个实例
  • [HackMyVM]靶场Boxing
  • [hadoop读书笔记] 第十五章 sqoop1.4.6小实验 - 将mysq数据导入HBASE
  • [HDU3710]Battle over Cities