1.变量
1.1 定义变量
语法:
变量名 = 数据
说明:
变量名 - 自己命名 要求:1)标识符 2)不能是关键字
规范:1)见名知义 2)满足PEP8命名规范(所有字母小写,多个单词之间下划线隔开)
3)不使用系统提供类型名、函数名和模块名
= - 赋值符号
数据 - 任何有结果的表达式,包括:独立数据、运算表达式(赋值运算除外)、函数调用表达式
age = 18
teacher_name = '张三'
int_num = 20
stu_score = 90 # 定义变量,保存学生分数:90
1.2使用变量
print(age)
print('age', age)
print(10 + 20)
print(age + 20)
print('abc'[0])
str1 = 'abc'
print(str1[0])
1.3 修改变量中的数据(重新赋值)
age = 20
print(age)
python中同一个变量可以保存不同类型的值
age = '你好'
print(age)
1.4 同时定义多个变量/同时给多个变量赋值
同时给不同变量赋不同的值:变量1,变量2,变量3,…= 数据1,数据2,数据3,…
a, b, c = 10, 20, 30
print(a, c, b)
python交换两个变量的值: 变量1, 变量2 = 变量2, 变量1
x = 100
y = 200
x, y = y, x # x, y = 200, 100
print(x, y)
同时给不同变量赋相同值:变量1 = 变量2 = 变量3 = … = 数据
a1 = a2 = a3 = 100
print(a1, a2, a3)
注意:没有赋值的变量不能使用
2. 变量赋值的原理
1.定义变量和给变量赋值的原理:
1)首先堆中申请内存(大小根据数据所需内存大小决定)
2)将数据保存内存区域中
3)变量和保存数据的内存进行关联(变量保存数据对应的内存地址)
2.id函数
id(变量) - 获取变量关联数据的内存地址
num = 10
print(id(num))
num = 20
print(id(num))
3. 数学运算符
python支持的运算符:数学运算符、比较运算符、逻辑运算符、赋值运算符、位运算
3.1.数学运算符: +, -, *, /, %(取余、取模), //(整除), **(幂运算)
1)% - 求余数
数字1 % 数字2 -> 数字1除以数字2余数
print(5 % 2)
应用1:取低位
num = 679
print(num % 10)
应用2:判断基偶
num = 2898
print(num % 2)
2)// - 取整(向小取整)
print(5//2) # 2
print(-5//2) # -3
print(3.9//3) # 1.0
应用:取高位
num = 367
print(num // 100) # 3
print(num // 10) # 36
- **
print(2 ** 3) # 8
print(9 ** 0.5) # 3
4. 比较运算符
比较运算符(关系运算符):>, <, ==, >=, <=, !=
注意:1.所有比较运算的结果都是布尔值
2.数字数据不能和字符串数据进行比较
print(10 > 5)
print(10 <= 5)
print(10 != 10)
python支持比较运算符的连写来表示
x = 10
print(0 < x <100)
可以将运算结果赋给变量
a = 3 > 4
print(a) # False
5. 逻辑运算符:and(与), or(或), not(非)
1.and
1)运算规则:
操作对象布尔值:两个True -> True , 有一个False -> False
2)应用场景:多个条件同时满足
grade = 4.5
score = 90
print(grade > 4 and score > 85)
2.or
1)运算规则:
操作对象布尔值:两个False -> False , 有一个True -> True
2)应用场景:多个条件只需满足一个
grade = 4.5
score = 90
print(grade > 4 or score > 90)
判断是否为闰年
year = 2012
print('是否是闰年:', year % 400 == 0 or year % 4 == 0 and year % 100 != 0)
3.not
1)运算规则:True 变 False , False 变 True
2)应用场景:否定某个条件
number是否不能同时被3和7整除
num = 22
print('是否满足条件:', not (num % 3 == 0 and num % 7 == 0))
4.操作对象不是bool
逻辑运算符语法上可以操作任何数据
数据布尔值:所有为零为空的值是False,其他数据布尔值是True
数据1 and 数据2 -> 数据1布尔值是True,结果是数据2
数据1布尔值是False,结果是数据1
数据1 or 数据2 -> 数据1布尔值是True,结果是数据1
数据1布尔值是False,结果是数据2
print(7 and 'abc' )
print(False and 5)
print('' and 'abc' )
print(0 or 'abc')
print(7 or 5)
print(not 1)
print(not 0)
短路操作
and 的短路操作:
表达式1 and 表达式2 -> 1是False,2不执行
or 的短路操作:
表达式1 or 表达式2 -> 1是True,2不执行
6. 赋值运算符
1. 赋值运算符:=, +=, -=, *=, /=, %=, //=, **=
赋值运算符左边是变量,右边可以是任意有结果的表达式
复合赋值运算符左边必须是已经赋值过的变量
变量 += 数据 -> 变量 = 变量 + 数据
a = 100
a += 20
print(a) # 120
a /= 4
print(a) # 30.0
a **= 2
print(a) # 900
2.运算符优先级
数学运算符 > 比较运算符 > 逻辑运算符 > 赋值运算符
and > or > not
7. 位运算
1.位运算的特点:效率高、内存消耗少
2.位运算运算符:&(按位与)、 |(按位或)、 ^(异或)、 ~(按位取反)、 >>(右移)、 <<(左移)
位运算直接操作数据内存中存储的补码
1) &(按位与)
数字1 & 数字2 - 两个都是1结果是1,否则为0
01101101(补)& 10101100(补) -> 00101100(补)
print(5 & 9)
print(-5 & -9)
应用:判断奇偶性
“”"
与1进行按位与运算,结果1为奇数,结果0为偶数
“”"
print(-30 & 1)
2) |(按位或)
数字1 | 数字2 - 两个都是0结果是0,否则为1
“”"
7|-16
00000111
10010000 11110000
11110110 10001001
-9
“”"
print(7 | -16)
3)^(异或)
数字1 | 数字2 - 相同为0,不同为1
4)~(按位取反)
数字1 ~ 数字2 - 0变1,1变0
5)>>(右移)、 <<(左移)
数字1 >> 数字2 - 数字1 // 2数字2
数字1 << 数字2 - 数字1 * 2数字2
应用:快速乘以或除以2的n次幂
print(5 << 2) # 5 * 2**2