2 变量数据类型和运算符
- 1 数据类型
- 注意
1 数据类型
不同类型的变量可以进行的运算是不同的,所以必须理解变量的类型,python中数据类型可以分为:
- 内置类型
- 数值类型:整型int,浮点型float,复数(complex) 3+5j
- str:字符串
- bool:布尔值【True,False】
- None:空值,表示变量没有确定的值
- list:列表
- tuple:元组
- dict:字典
- set:集合
- 自定义类型
- class :类
1.1 基础类型
- 数值类型:
- 整型(int): python3中只有int一种,可以表示整数,例如:10,-5,10000
- 浮点型(float): 表示带小数点的实数,有两种表示法:
- 小数表示: 1.9 .23
- 科学计数法: 用e来表示10的指数,1e2就代表了100,注意e前面必须有数值,e后面必须为整数
- 复数(complex):表示数学上的无理数,形如:a+bj
- 布尔型(bool):表示事务的两种状态,男女、阴晴、亮暗等,它只有两个值:True,False
- None:表示空对象,一般用于判断,不同于0和空字符
- 字符串(str):在python中,用引号(单引号、双引号、三引号)表示字符串
- 字符串的表示
- 转义字符:有些特殊字符无法从键盘输入,可以使用转义字符表示,另外,无论是单引号、双引号还是三引号字符串,其中引号是字符串界定符,引号并不是字符串的内容,那么如何在单引号字符串中表示一个单引号呢,这也可以使用转义字符表示。常见的转义字符
转义字符 | 描述 | 转义字符 | 描述 |
| 表示一个普通字符单引号 | \n | 换行 |
| 表示一个普通字符双引号 | \r | 回车 |
| 一个普通的三单引号 | | 一个普通的字符\ |
| 一个普通的三双引号 | \a | 响铃 |
\t | tab键 | \b | 回删一个字符 |
- 字符串编码:计算机只能识别二进制,那么字符串如何存储到计算机里呢
1.2 类型判断
我们可以使用type和isinstance来测试和判断数据类型
结论:优先使用isinstance
2. 运算符和表达式
在数学上为了计算结果,我们会写一些式子计算,例如:
30 + 5
这是数学中的计算式,python中为了计算也有类似的式子,叫表达式。在表达式中30和5称作操作数,+称之运算符。表达式的目的在于计算结果。表达式构成:
- 最基本的表达式就是一些数值,变量、函数,例如: 3, a(变量) print(‘hello’)
- 由基本表达式加上适当的运算符构成复杂的表达式: 3 + a
综合上述,所谓表达式就是由操作数和运算符组成䄦符合python语法的式子。要写表达式首先要学习运算符。关于运算符要知道两件事情
- 计算顺序 : 是从左向右算还是从右向左算
- 优先级 : 比如先乘除后加减
2.1 算术运算符
a = 20
b = 10
运算符 | 说明 | 示例 |
- | 负号,取原数的相反数 | a = 10 print(-a) #-10 |
+ - * / | 加减乘除,同数学上一样 | a + b = 30 a - b = 10 a * b = 200 a / b = 2 |
% | 模运算,即求 a整除以b的余数 | a % 10 = 0 |
// | 整除 | a // b = 2 |
** | 对运算符进行指数(幂)计算 | a ** b 表示20的10次方 |
2.2 模运算说明
- 模运算的符号取决于第二个操作数(右操作数)
- 模运算的计算公式:r = a % b = a - n * b,其中n是小于a/b的最大整数
- 整除(//)运算如果有一个操作数是浮点数,结果是浮点数
- 用途:判断奇偶、判断是否能够整除、最大公约数、水仙花数
2.3 数学函数
函数名 | 函数的说明 | 示例 |
abs | 取绝对值 | abs(-10) |
pow(x,y) | x的y次方 | pow(10,2)求10的平方 |
round(x,[n]) | 浮点数的4舍5入, n代表保留小数的位数 | round(3.456) |
max() | 求给定参数的最大值 | max(21,43,65,75,86,32,3,45) |
min() | 求给定参数的最小值 | min(21,43,65,75,86,32,3,45) |
math.ceil() | 需要导入import math库 向上取整 | math.ceil(18.1) #19 |
math.floor() | 需要导入import math库 向下取整 | math.floor(18.1) #18 |
math.sqrt | 需要导入import math库 求平方根 | math.sqrt(100) |
2.4 随机函数
获取随机数,需要引入random库。
import random
函数名 | 函数说明 |
random.randrange(start,stop,step) | start 指定范围的起始值 包含本身,默认是0;stop 指定范围的结束值 不包含本身; step 步长,默认步长是1。该函数返回一个整数 |
random.randint(start,end) | 返回[start end]之间的一个随机整数,start必须小于end |
random.random() | 返回一个[0.0,1.0)之间的随机小数 |
注意
- 优先级: ** >正负号 > // % * / > + -
- 从左向右算
- 在幂运算和一元运算符联合计算时,从右向左算,例如: -1 ** 2 = -1
2.5 赋值运算符
a = 5; b = 10; c = 20
运算符 | 说明 | 示例 |
= | 简单赋值, 将b+c的结果赋给a | a = b +c #a=30 |
+= | a += b等价于 a = a +b | a = 15 |
-= | a -= b等价于 a = a - b | a = -5 |
*= | a *= b等价于 a = a * b | a = 50 |
/= | a /= b 等价于a = a / b | a = 0.5 |
%= | a %= b等价于a = a % b | a = 5 |
//= | a //= b等价于 a = a // b | a = 0 |
**= | a **= b等价于a = a ** b |
注意:
- 赋值运算符左边必须是变量
- 从右向左算
- 没有赋值表达式
- 所有赋值运算符优先级相同,赋值运算符优先级非常低,仅高于成员运算符和身份运算符、逻辑运算符
- 注意在复合赋值中
2.6 关系运算
关系运算就是比较运算,如果表达式成立,返回True,否则返回False。关系运算的结果是布尔值。
运算符 | 示例 | 说明 |
== | a == b | a和b值相等,结果是True,a和b值不相等结果为False |
!= | a != b | a不等于b 结果为True,否则结果为True |
> | a > b | a大于b结果为True,否则为False |
>= | a >= b | a大于等于b结果为True,否则为False |
< | a < b | a小于b结果为True,否则为False |
<= | a <= b | a小于等于b结果为True,否则为False |
注意:
- 优先级: 比较运算符优先级相同
- 从左向右算
- 可以这样算:
1 < a < 3
等价于 a > 1 and a < 3
2.7 逻辑运算
逻辑运算符可以用于构造复杂条件。逻辑运算符包括:
- 逻辑与 and 对应汉语的意思是“并且” 、 “同时”
- 逻辑或 or 对应汉语意思为"或者"
- 逻辑非 not 对应汉语意思为”相反“
在逻辑运算中,False、None、0、0.0、‘’(空字符串)被看做假(False),其它的看做真(True)
2.7.1 逻辑与
a | b | a and b |
真 | 任意值 | b的值 |
假 | 任意值 | a的值 |
- 表达式 a and b的值为: 如果a为真,结果为b的值,否则结果是a的值
2.7.2 逻辑或
a | b | a or b |
真 | 任意值 | a的值 |
假 | 任意值 | b的值 |
- 表达式a or b的值为:如果a为真结果为a的值,否则结果是b的值
2.7.3 逻辑非
a | not a |
真 | False |
假 | True |
小结:a为真则表达式为False,否则表达式为True
2.8 短路计算
- 对于逻辑与表达式 a and b,如果a为假,则不计算b
- 对于逻辑或表达式 a or b ,如果a为真,则不计算b
2.9 注意事项
- 优先级 not > and >or
2.10 身份运算符
is: 判断两个标识符是否引用自同一个实体【对象】,比较的是两个对象的id是否一样,如果相同为真,否则为假
is not:判断两个标识符是不是引用自不同的实体【对象】如果两个对象的id不同结果为真,否则为假
id()函数获取实体的id(地址)
注意:is和==的区别
- is用于判断两个变量引用实体是否为同一个【id】
- ==用于判断两个变量的值是否相同,但id不一定相同
2.11 成员运算符
主要应用在序列中
in:如果在指定的序列中找到指定的值,则返回True,否则返回False
not in:如果在指定的序列中未找到指定的值,则返回True,否则返回False
2.12 if-else表达式
表达式1 if 条件 else 表达式2
如果条件为真假结果是表达式1的值,否则结果是表达式2的值