1 基础知识

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

2 + 4
4 * 5 + 20
5.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个运算符的优先级顺序如下图所示。越靠前优先级越高,同一行的运算符的优先级相同。

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

print(2 + 4)						#  运算结果:6
print(126 - 654) # 运算结果:-528
print(6 + 20 * 4) # 运算结果:86
print((20 + 54) * 30) # 运算结果:2220
print(1/2) # 运算结果:0.5
print(1//2) # 运算结果:0
print(3/2) # 运算结果:1.5
print(3//2) # 运算结果:1
print(4**3) # 运算结果:64
print(3 + 5 * -3 ** 4 - (-5)**2) # 运算结果:-427
# 用变量操作数值
x = 30
y = 50
k = 10.2
print(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)) # 十进制转二进制,输出结果:0b1100
print(int("10110",2)) # 二进制转十进制,输出结果:22
print(int("0xF35AE",16)) # 十六进制转十进制,输出结果:996782
print(hex(54321)) # 十进制转十六进制,输出结果:0xd431
print(bin(0xF012E)) # 十六进制转二进制,输出结果:0b11110000000100101110
print(hex(0b1101101)) # 二进制转十六进制,输出结果:0x6d
print(oct(1234)) # 十进制转八进制,输出结果:0o2322
print(int("76532", 8)) # 八进制转十进制,输出结果:32090

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

《Python从菜鸟到高手》开始转载了,敬请关注

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.56789
print(format(x, ','))
# 每千位用逗号(,)分隔,并保留小数点后2位数字,输出结果:1,234.57
print(format(x, ',.2f'))
# 用科学计数法形式输出数字,输出结果:1.234568e+03
print(format(x, 'e'))
# 用科学计数法形式输出数字,尾数保留小数点后2位数字,输出结果:1.23E+03
print(format(x, '0.2E'))

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

《Python从菜鸟到高手》已经出版,开始连载了,购买送视频课程

Python从菜鸟到高手(5):数字的更多相关文章

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

    本文主要内容: 1. 数字的基础知识 2. 大整数 3. 二进制.八进制和十六进制 4 数字的格式化输出 一.数字的基础知识 Python语言与其他编程语言一样,也支持四则运算(加.减.乘.除),以及 ...

  2. 《Python从菜鸟到高手》已经出版,开始连载了,购买送视频课程

    好消息,<Python从菜鸟到高手>已经出版!!!   JetBrains官方推荐图书!JetBrains官大中华区市场部经理赵磊作序!送2400分钟同步视频课程!500个案例,400道P ...

  3. Python从菜鸟到高手(3):声明变量

    变量(variable)是Python语言中一个非常重要的概念.变量的主要作用就是为Python程序中的某个值起一个名字.类似于"张三"."李四"." ...

  4. Python从菜鸟到高手(6):获取用户输入、函数与注释

    1. 获取用户输入   要编写一个有实际价值的程序,就需要与用户交互.当然,与用户交互有很多方法,例如,GUI(图形用户接口)就是一种非常好的与用户交互的方式,不过我们先不讨论GUI的交互方式,本节会 ...

  5. Python从菜鸟到高手(2):清空Python控制台

    执行python命令会进入Python控制台.在Python控制台中可以用交互的方式执行Python语句.也就是执行一行Python语句,会立刻返回执行结果.   当Python控制台输入过多的Pyt ...

  6. Python从菜鸟到高手(7):字符串

    1. 单引号字符串和转义符   字符串与数字一样,都是值,可以直接使用,在Python控制台中直接输入字符串,如"Hello World",会按原样输出该字符串,只不过用单引号括了 ...

  7. Python从菜鸟到高手(1):初识Python

    1 Python简介 1.1 什么是Python   Python是一种面向对象的解释型计算机程序设计语言,由荷兰人吉多·范罗苏姆(Guido van Rossum)于1989年发明,第一个公开发行版 ...

  8. Python从菜鸟到高手(18):类与方法的私有化

    1. 创建自己的类 学习面向对象的第一步,就是创建一个类.因为类是面向对象的基石.Python类和其他编程语言(Java.C#等)的类差不多,也需要使用class关键字.下面通过一个实际的例子来看一下 ...

  9. Python从菜鸟到高手(8):print函数、赋值与代码块

    1.神奇的print函数   print函数相信读者一定对它不陌生,因为在前面的章节,几乎每个例子都使用了print函数,这个函数的功能就是在控制台输出文本.不过print在输出文本时还可以进行一些设 ...

随机推荐

  1. 13.1、多进程:进程锁Lock、信号量、事件

    进程锁: 为什么要有进程锁:假如现在有一台打印机,qq要使用打印机,word文档也要使用打印机,如果没有使用进程锁,可能会导致一些问题,比如QQ的任务打印到一半,Word插进来,于是打印出来的结果是各 ...

  2. DirectX SDK (June 2010)安装错误S1023,解决方法

    转自:http://hi.baidu.com/rootcat/item/6730f15f85e2c1958c12ed81 DirectX SDK (June 2010)安装错误S1023,解决方法 导 ...

  3. Intel P4 CPU

    1. P4 CPU 结构 奔4处理器是Intel的经典之作,它是采用乱序执行内核的超标量处理器.P4采用的微架构称为 Net Burst,基本结构如下: 奔4处理器微架构被分成了4大部分: (1)存储 ...

  4. 第三章 Hyper-V 2012 R2配置选项

    原书中的第二章 是介绍了下hyper-v的管理器和检查点的使用,导入导出虚拟机,所以我跳过了不高兴写,很简单.直接进入第三部分,介绍虚拟机的三个重要组成部分:CPU,内存,硬盘的配置选项. Hyper ...

  5. 【PAT】B1066 图像过滤(15 分)

    注意输出是占三位,其他的挺水 #include<stdio.h> #include<algorithm> using namespace std; int main(){ in ...

  6. February 6th, 2018 Week 6th Tuesday

    To be is to be perceived. 存在即被感知. How to interpret this quote? Maybe it means that everything in you ...

  7. Some reading, some thinking.

    update:感谢助教0 0又学会一招,play 了一下CSS Part 1 · Reading Author Article Note Madcola <两年波折路(考研.工作.考研)> ...

  8. vue实例生命周期详解

    每个 Vue 实例在被创建之前都要经过一系列的初始化过程. 例如,实例需要配置数据观测(data observer).编译模版.挂载实例到 DOM ,然后在数据变化时更新 DOM . 在这个过程中,实 ...

  9. 计算器和Menu

    MainActivity.java import android.app.Activity; import android.content.Intent; import android.os.Bund ...

  10. UVA816-Abbott's Revenge(搜索进阶)

    Problem UVA816-Abbott's Revenge Accept: 1010  Submit: 10466 Time Limit: 3000 mSec Problem Descriptio ...