笔者:风起怨江南 出处:https://blog.csdn.net/JackMengJin 笔者原创,文章欢迎转载,如果喜欢请点赞+关注,感谢支持!
数字类型、运算符和计算
上一篇简单的介绍了基本数据类型->传送门,这篇着重介绍Python的数字类型、运算符和计算。
一、数字类型
数字类型用于存储数学意义上的数值。
数字类型是不可变类型。所谓的不可变类型,指的是类型的值一旦有不同了,那么它就是一个全新的对象。
这里再说一下Python的变量和数据类型的关系:变量只是对某个对象的引用或者说代号、名字、调用等等,变量本身没有数据类型的概念。
数字类型 | 存储内容 | 示例 |
int | 整数 | 1、2、3、-100、500等 |
float | 浮点数 | 1.1、3.1415、0.145等 |
complex | 复数 | 3.14j等 |
long | 长整形 | Python3取消长整型概念,本文不再讨论长整型 |
1.1 整数
整数(int)通常被称为整型,是正或负整数,不带小数点。
Python3的整型可以当作Long类型(长整型)使用,所以 Python3没有Python2的Long类型。
- 表示数字时可以使用二进制、八进制、十进制或十六进制来表示:
二进制用0b前缀和0-1表示:比如0b01001
八进制用0o前缀和0-7表示:比如0o1475
十进制不用前缀,直接用0-9表示:9541
十六进制用0x前缀和0-9,a-f表示:0xaf09
#二进制
print(0b01001,type(0b01001))
#八进制
print(0o1475,type(0o1475))
#十进制
print(9541,type(9541))
#十六进制
print(0xaf09,type(0xaf09))
9 <class 'int'>
829 <class 'int'>
9541 <class 'int'>
44809 <class 'int'>
1.2 浮点数
浮点数(float)也就是小数,如0.123,3.1415,-100.54等。对于很大或很小的浮点数,一般用科学计数法表示,把10用e替代,5.74x10^10就是5.74e10或者57.4e9,0.00000028可以写成2.8e-7等等。
>>> print(0.123,type(0.123))
0.123 <class 'float'>
>>>
print(5.74*10000000000000000,type(5.74*10000000000000))
5.74e+16 <class 'float'>
1.3 复数
复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示,复数的实部a和虚部b都是浮点型。
>>> print(3.14j,type(3.14j))
3.14j <class 'complex'>
>>>
1.4 数字类型转换
在Python里如何对数字的类型进行转换?这里就要说到Python的内置数据类型转换函数。
int(x): 将x转换为整数。如果x是个浮点数,则截取小数部分。
float(x) :将x转换为浮点数。如果x是个整数,则截取小数一位为0。
complex(x) :将x转换为复数,实数部分为 x,虚数部分为 0。
complex(x, y): 将 x 和 y 转换为一个复数,实数部分为 x,虚数部分为 y。
运用《Python学习01》里变量的用法,进行下数字类型转化练习:
number0 = int(3.1415926)
number1 = float(-100)
number2 = complex(80)
number3 = complex(17,47)
print(number0,type(number0))
print(number1,type(number1))
print(number2,type(number2))
print(number3,type(number3))
3 <class 'int'>
-100.0 <class 'float'>
(80+0j) <class 'complex'>
(17+47j) <class 'complex'>
转换过程中如果出现无法转换的对象,则会出现异常。
比如复数转换为整数:
>>> print(int(3j))
Traceback (most recent call last):
File "<pyshell#10>", line 1, in <module>
print(int(3j))
TypeError: can't convert complex to int
>>>
字符串转换为浮点数:
>>> print(float(hello))
Traceback (most recent call last):
File "<pyshell#13>", line 1, in <module>
print(float(hello))
NameError: name 'hello' is not defined
>>>
二、运算符
Python的运算符
什么是运算符?1+2=3,1和2是操作数,‘+’加号就是运算符。
Python支持以下类型的运算符
- 算术运算符
- 比较(关系)运算符
- 赋值运算符
- 逻辑运算符
- 位运算符
- 成员运算符
- 身份运算符
- 运算符优先级
2.1 算术运算符
运算符 | + | - | * | / | % | // | ** |
描述 | 加法 | 减法 | 乘法 | 除法 | 取模,返回除法的余数 | 取整除,返回商的整数部分 | 幂,次方 |
实例:
#加法+
print(945+547)
#减法-
print(8-1000)
#乘法*
print(31*666)
#除法/
print(1000/4)
#取模%
print(521%13)
#取整//
print(521//14)
#次方**
print(4**4)
#组合运算
print(1+2+3+54*2-90/6-1234/4%13-213//14**5)
1492
-992
20646
250.0
1
37
256
89.5
简单的运算优先级:
- ()内的项目
- 求幂运算**或者根运算
- 乘法或除法
>>> print(2+3*2)
8
>>> print((2+3)*2)
10
>>>
2.2 比较运算符
运算符 | == | != | > | < | >= | <= |
描述 | 等于 | 不等于 | 大于 | 小于 | 大于等于 | 小于等于 |
实例:
#比较运算符
print(1==2)
print(1!=2)
print(1>2)
print(1<2)
print(1>=2)
print(1<=2)
print(1<=2>3==4)
False
True
False
True
False
True
False
比较运算符返回的是布尔值(False和True)。
2.3 赋值运算符
运算符 | = | += | -= | *= | /= | **= | %= | //= |
描述 | 简单的赋值运算符 | 加法赋值运算符 | 减法赋值运算符 | 乘法赋值运算符 | 除法赋值运算符 | 幂赋值运算符 | 取模赋值运算符 | 取整除赋值运算符 |
实例:
#赋值运算符
num0 = 50
num1 = 99
num2 = num0 + num1
print(num2)
num2 += num0
print(num2)
num2 -= num1
print(num2)
num2 *= num0
print(num2)
num2 /= num0
print(num2)
num2 **= num0
print(num2)
num2 %= num1
print(num2)
num2 //= num1
print(num2)
149
199
100
5000
100.0
1e+100
10.0
0.0
2.4 位运算符
按位运算符是把数字看作二进制来进行计算的。
运算符 | & | | | ^ | ~ | << | >> |
描述 | 按位与运算符: 参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0。 |
按位或运算符: 只要对应的二个二进位有一个为1时,结果位就为1。 |
按位异或运算符:当两对应的二进位相异时,结果为1。 | 按位取反运符: 对数据的每个二进制位取反,即把1变为0,把0变为1 。~x 类似于 -x-1。 |
左移动运算符: 运算数的各二进位全部左移若干位,由 << 右边的数字指定了移动的位数,高位丢弃,低位补0。 |
右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,>> 右边的数字指定了移动的位数。 |
实例:
#位运算符
a = 60 # 60 = 0011 1100
b = 13 # 13 = 0000 1101
c = 0
c = a & b# 12 = 0000 1100
print(c)
c = a | b# 61 = 0011 1101
print(c)
c = a ^ b# 49 = 0011 0001
print(c)
c = ~a# -61 = 1100 0011
print(c)
c = a << 2# 240 = 1111 0000
print(c)
c = a >> 2# 15 = 0000 1111
print(c)
12
61
49
-61
240
15
2.5 逻辑运算符
运算符 | and | or | not |
描述 | x and y 布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。 |
x or y 布尔"或" - 如果 x 是非 0,它返回 x 的值,否则它返回 y 的计算值。 |
not x 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 |
实例:
2.6 成员运算符
成员运算符中,测试实例包含一系列的成员,包含字符串、列表或元组。
运算符 | in | not in |
描述 | x and y 布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。 |
x or y 布尔"或" - 如果 x 是非 0,它返回 x 的值,否则它返回 y 的计算值。 |
字符串为例:
#成员运算符
str0 = 'hello'
str1 = 'helle world!'
print(str0 in str1)
print(str0 not in str1)
False
True
列表为例:
#成员运算符
num0 = 10
num1 = [10,20,30,40]
print(num0 in num1)
print(num0 not in num1)
True
False
2.7 身份运算符
Python里身份运算符用于比较两个对象的存储单元。
运算符 | is | is not |
描述 | is 是判断两个标识符是不是引用自一个对象。 | is not 是判断两个标识符是不是引用自不同对象。 |
实例:
#成员运算符
num0 = 111
num1 = 111
print(num0 is num1)
print(num0 is not num1)
num2 = 111
num3 = 121
print(num2 is num3)
print(num2 is not num3)
is与==的区别:is 用于判断两个变量引用对象是否为同一块内存空间, == 用于判断引用变量的值是否相等。
关于Python的运算符的更多运用会在具体后续具体项目使用,这里不再展开研究。
三、数学计算
除了前面简单的加减乘除,更多的科学计算需要导入math这个库,math这个库包含了绝大多数可能需要的科学计算函数。
需要注意的是,许多函数是不能直接访问的,所以我们需要导入数学模块,然后我们需要调用这个函数(math),用数学的静态对象。
函数 | 返回值 |
abs(x) | 返回数字的绝对值,如abs(-100) 返回 100。 |
ceil(x) | 返回数字的上入整数,如math.ceil(10.11) 返回 11。 |
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的平方根。 |
acos(x) | 返回x的反余弦弧度值。 |
asin(x) | 返回x的反正弦弧度值。 |
atan(x) | 返回x的反正切弧度值。 |
atan2(y,x) | 返回给定的 X 及 Y 坐标值的反正切值。 |
cos(x) | 返回x的弧度的余弦值。 |
hypot(x,y) | 返回欧几里德范数 sqrt(xx + yy)。 |
sin(x) | 返回的x弧度的正弦值。 |
tan(x) | 返回x弧度的正切值。 |
degrees(x) | 将弧度转换为角度,如degrees(math.pi/2) , 返回90.0。 |
radians(x) | 将角度转换为弧度。 |
pi | 常量,数学常量 pi(圆周率,一般以π来表示)。 |
e | 常量,数学常量 e,e即自然常数(自然常数)。 |
由于当前还未讲到函数部分,这部分内容先选取3个常用的函数了解下,后续再深入研究其他函数的使用。
绝对值abs():
#绝对值 abs()
num0 = abs(-982)
print(num0)
982
上入整数ceil():
import math
#上入整数ceil()
num1 = math.ceil(-52.1)
print(num1)
-52
sum()求和函数,求和计算:
#求和函数sum()
sum0 = [1,2,3,4,5,6,7,8,9,10]
print(sum(sum0))
55
以上便是《Python学习02讲》所有内容,更多python学习请继续关注我的博客——风起怨江南,不定期更新,原创不易,如果喜欢请点赞和关注,谢谢大家的支持!想获得更多免费的学习资料请添加微信公众号——风起怨江南,谢谢大家的关注和支持!