Python学习02:数字类型、运算符和计算

笔者:风起怨江南 出处: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支持以下类型的运算符

  1. 算术运算符
  2. 比较(关系)运算符
  3. 赋值运算符
  4. 逻辑运算符
  5. 位运算符
  6. 成员运算符
  7. 身份运算符
  8. 运算符优先级

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学习请继续关注我的博客——风起怨江南,不定期更新,原创不易,如果喜欢请点赞和关注,谢谢大家的支持!想获得更多免费的学习资料请添加微信公众号——风起怨江南,谢谢大家的关注和支持!

发布了10 篇原创文章 · 获赞 14 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/JackMengJin/article/details/105323297
今日推荐