Python3 数字

Python 数字类型用于数值的储存。数值类型是不允许改变的,如果改变数字数据类型的值,将重新分配内存空间。

以下实例在变量赋值时 Number 对象将被创建:

var1 = 1var2 = 10

您也可以使用del语句删除一些数字对象的引用。

del语句的语法是:

del var1[,var2[,var3[....,varN]]]

您可以通过使用del语句删除单个或多个对象的引用,例如:

del var
del var_a, var_b

Python 支持三种不同的数值类型:

  • 整型(Int)
  • 浮点型(float)
  • 复数( (complex))

我们可以使用十六进制和八进制来代表整数:

>>> number = 0xA0F # 十六进制
>>> number
2575

>>> number=0o37 # 八进制
>>> number
31



int

float

complex

10

0.0

3.14j

100

15.20

45.j

-786

-21.9

9.322e-36j

080

32.3e+18

.876j

-0490

-90.

-.6545+0J

-0x260

-32.54e100

3e+26J

0x69

70.2E-12

4.53e-7j



  • Python支持复数,复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型。

Python 数字类型转换

有时候,我们需要对数据内置的类型进行转换,数据类型的转换,你只需要将数据类型作为函数名即可。

  • int(x)
  • float(x)
  • complex(x)
  • complex(x, y)

以下实例将浮点数变量 a 转换为整数:

>>> a = 1.0
>>> int(a)
1

强制数据类型转换在某些情况下会丢失精度,在一些对精度要求比较高的环境下建议不要轻易使用强制数据类型转换!!


Python 数字运算

Python 解释器可以作为一个简单的计算器,您可以在解释器里输入一个表达式,它将输出表达式的值。

表达式的语法很直白: +, -, * 和 /, 和其它语言(如Pascal或C)里一样。例如:

>>> 2 + 2
4
>>> 50 - 5*6
20
>>> (50 - 5*6) / 4
5.0
>>> 8 / 5  # 总是返回一个浮点数
1.6

注意:在不同的机器上浮点运算的结果可能会不一样。

在整数除法中,除法 / 总是返回一个浮点数,如果只想得到整数的结果,丢弃可能的分数部分,可以使用运算符 // :

>>> 17 / 3  # 整数除法返回浮点型
5.666666666666667
>>>
>>> 17 // 3  # 整数除法返回向下取整后的结果
5
>>> 17 % 3  # %操作符返回除法的余数
2
>>> 5 * 3 + 2 
17

注意:// 得到的并不一定是整数类型的数,它与分母分子的数据类型有关系。

>>> 7//2
3
>>> 7.0//2
3.0
>>> 7//2.0
3.0
>>>

等号 = 用于给变量赋值。赋值之后,除了下一个提示符,解释器不会显示任何结果。

>>> width = 20
>>> height = 5*9
>>> width * height
900

Python 可以使用 ** 操作来进行幂运算:

>>> 5 ** 2  # 5 的平方
25
>>> 2 ** 7  # 2的7次方
128

变量在使用前必须先"定义"(即赋予变量一个值),否则会出现错误:

>>> n   # 尝试访问一个未定义的变量
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'n' is not defined

不同类型的数混合运算时会将整数转换为浮点数:

>>> 3 * 3.75 / 1.5
7.5
>>> 7.0 / 2
3.5

在交互模式中,最后被输出的表达式结果被赋值给变量 _ 。例如:

>>> tax = 12.5 / 100
>>> price = 100.50
>>> price * tax
12.5625
>>> price + _
113.0625
>>> round(_, 2)
113.06

此处, _ 变量应被用户视为只读变量。

数学函数

函数返回值 ( 描述 )

abs(x)返回数字的绝对值,如abs(-10) 返回 10

ceil(x)返回数字的上入整数,如math.ceil(4.1) 返回 5

cmp(x, y)

如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。 Python 3 已废弃,使用 (x>y)-(x<y) 替换。

exp(x)返回e的x次幂(ex),如math.exp(1) 返回2.718281828459045

fabs(x)返回数字的绝对值,如math.fabs(-10) 返回10.0

floor(x)返回数字的下舍整数,如math.floor(4.9)返回 4

log(x)如math.log(math.e)返回1.0,math.log(100,10)返回2.0

log10(x)返回以10为基数的x的对数,如math.log10(100)返回 2.0

max(x1, x2,...)返回给定参数的最大值,参数可以为序列。

min(x1, x2,...)返回给定参数的最小值,参数可以为序列。

modf(x)返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示。

pow(x, y)x**y 运算后的值。

round(x [,n])

返回浮点数 x 的四舍五入值,如给出 n 值,则代表舍入到小数点后的位数。

其实准确的说是保留值将保留到离上一位更近的一端。

sqrt(x)返回数字x的平方根。

随机数函数

随机数可以用于数学,游戏,安全等领域中,还经常被嵌入到算法中,用以提高算法效率,并提高程序的安全性。

Python包含以下常用随机数函数:

函数描述

choice(seq)从序列的元素中随机挑选一个元素,比如random.choice(range(10)),从0到9中随机挑选一个整数。

randrange ([start,] stop [,step])从指定范围内,按指定基数递增的集合中获取一个随机数,基数默认值为 1

random()随机生成下一个实数,它在[0,1)范围内。

seed([x])改变随机数生成器的种子seed。如果你不了解其原理,你不必特别去设定seed,Python会帮你选择seed。

shuffle(lst)将序列的所有元素随机排序

uniform(x, y)随机生成下一个实数,它在[x,y]范围内。

三角函数

Python包括以下三角函数:

函数描述

acos(x)返回x的反余弦弧度值。

asin(x)返回x的反正弦弧度值。

atan(x)返回x的反正切弧度值。

atan2(y, x)返回给定的 X 及 Y 坐标值的反正切值。

cos(x)返回x的弧度的余弦值。

hypot(x, y)返回欧几里德范数 sqrt(x*x + y*y)。

sin(x)返回的x弧度的正弦值。

tan(x)返回x弧度的正切值。

degrees(x)将弧度转换为角度,如degrees(math.pi/2) , 返回90.0

radians(x)将角度转换为弧度

数学常量

常量描述

pi数学常量 pi(圆周率,一般以π来表示)

e数学常量 e,e即自然常数(自然常数)。

Python3 序列

在编程语言中,将以某种方式(比如通过编号)组合起来的数据元素(如数字,字符串乃至其他数据结构)集合称为数据结构。在python中,最基本的数据结构为序列(sequence,简写为seq)。

所谓序列,指的是一块可存放多个值的连续内存空间,这些值按一定顺序排列,可通过每个值所在位置的编号(称为索引)访问它们。

为了更形象的认识序列,可以将它看做是一家旅店,那么店中的每个房间就如同序列存储数据的一个个内存空间,每个房间所特有的房间号就相当于索引值。也就是说,通过房间号(索引)我们可以找到这家旅店(序列)中的每个房间(内存空间)。

在 Python 中,序列类型包括字符串、列表、元组、集合和字典,这些序列支持以下几种通用的操作,但比较特殊的是,集合和字典不支持索引、切片、相加和相乘操作。

字符串也是一种常见的序列(所以以下的例子以字符串作为),它也可以直接通过索引访问字符串内的字符。

序列索引

序列中,每个元素都有属于自己的编号(索引)。从起始元素开始,索引值从 0 开始递增,如图 1 所示。




python 画图 ylim 三位小数 python画数字3_python 画图 ylim 三位小数


序列索引值示意图

除此之外,Python 还支持索引值是负数,此类索引是从右向左计数,换句话说,从最后一个元素开始计数,从索引值 -1 开始,如图 2 所示。


python 画图 ylim 三位小数 python画数字3_Powered by 金山文档_02


负值索引示意图

注意,在使用负值作为列序中各元素的索引值时,是从 -1 开始,而不是从 0 开始。

另一种理解方式是:将序列想象成如下方的一个环:

红色值为元素,绿色值为正索引,蓝色值为负索引
可以发现序列的最后一个元素和第一个元素刚好相邻,方向与正索引的方向刚好相反,所以其负索引值是-1,。该序列有8个元素,所以最后一个负索引(也就是第一个元素)是-8,刚好等于该序列的长度的负值。

无论是采用正索引值,还是负索引值,都可以访问序列中的任何元素。以字符串为例,访问“W3Cschool”的首元素和尾元素,可以使用如下的代码:

str="W3Cschool"print(str[0],"==",str[-9])
print(str[8],"==",str[-1])

输出结果为:

W == W
l == l

序列切片

切片操作是访问序列中元素的另一种方法,它可以访问一定范围内的元素,通过切片操作,可以生成一个新的序列。

序列实现切片操作的语法格式如下:

sname[start : end : step]

其中,各个参数的含义分别是:

  • sname:表示序列的名称;
  • start:表示切片的开始索引位置(包括该位置),此参数也可以不指定,会默认为 0,也就是从序列的开头进行切片;
  • end:表示切片的结束索引位置(不包括该位置),如果不指定,则默认为序列的长度;
  • step:表示在切片过程中,隔几个存储位置(包含当前位置)取一次元素,也就是说,如果 step 的值大于 1,则在进行切片去序列元素时,会“跳跃式”的取元素。如果省略设置 step 的值,则最后一个冒号就可以省略。

例如,对字符串“W3Cschool”进行切片:

str="W3Cschool"#取索引区间为[0,2]之间(不包括索引2处的字符)的字符串print(str[:2])
#隔 1 个字符取一个字符,区间是整个字符串print(str[::2])
#取整个字符串,此时 [] 中只需一个冒号即可print(str[:])

尝试一下

运行结果为:

W3
WCcol
W3Cschool

序列相加

Python 中,支持两种类型相同的序列使用“+”运算符做相加操作,它会将两个序列进行连接,但不会去除重复的元素。

这里所说的“类型相同”,指的是“+”运算符的两侧序列要么都是列表类型,要么都是元组类型,要么都是字符串。

例如,前面章节中我们已经实现用“+”运算符连接 2 个(甚至多个)字符串,如下所示:

protocol = "https://"
url = "www.w3cschool.cn"print(protocol+url)

尝试一下

输出结果为:

https://www.w3cschool.cn

序列相乘

Python 中,使用数字 n 乘以一个序列会生成新的序列,其内容为原来序列被重复 n 次的结果。例如:

str="W3Cschool"print(str*3)

输出结果为:

W3CschoolW3CschoolW3Cschool

比较特殊的是,列表类型在进行乘法运算时,还可以实现初始化指定长度列表的功能。例如如下的代码,将创建一个长度为 5 的列表,列表中的每个元素都是 None,表示什么都没有。

#列表的创建用 [],可以指定长度list = [None]*5print(list)

尝试一下

输出结果为:

[None, None, None, None, None]

检查元素是否包含在序列中

Python 中,可以使用 in 关键字检查某元素是否为序列的成员,其语法格式为:

valuein sequence

其中,value 表示要检查的元素,sequence 表示指定的序列。

例如,检查字符‘C’是否包含在字符串“W3Cschool”中,可以执行如下代码:

str="W3Cschool"print('C'in str)

尝试一下

运行结果为:

True

和 in 关键字用法相同,但功能恰好相反的,还有 not in 关键字,它用来检查某个元素是否不包含在指定的序列中,比如说:

str="W3Cschool"print('A'notin str)

尝试一下

输出结果为:

True

和序列相关的内置函数

Python提供了几个内置函数(表 3 所示),可用于实现与序列相关的一些常用操作。

表 3 序列相关的内置函数


函数

功能

len()

计算序列的长度,即返回序列中包含多少个元素。

max()

找出序列中的最大元素。注意,对序列使用 sum() 函数时,做加和操作的必须都是数字,不能是字符或字符串,否则该函数将抛出异常,因为解释器无法判定是要做连接操作(+ 运算符可以连接两个序列),还是做加和操作。

min()

找出序列中的最小元素。

list()

将序列转换为列表。

str()

将序列转换为字符串。

sum()

计算元素和。

sorted()

对元素进行排序。

reversed()

反向序列中的元素。

enumerate()

将序列组合为一个索引序列,多用在 for 循环中。


部分序列不能应用其中的部分函数,比如字典中不能直接使用list,详细的函数介绍请参阅相应数据类型的函数介绍。

这里给大家给几个例子:

str="W3Cschool"#找出最大的字符print(max(str))
#找出最小的字符print(min(str))
#对字符串中的元素进行排序print(sorted(str))

尝试一下

输出结果为:

s
3
['3', 'C', 'W', 'c', 'h', 'l', 'o', 'o', 's']