01变量
1.重新赋值
a = 10 # 创建变量a,并且赋值为10
print(a)
a = 100 # 重新给a赋值为100
print(a)
a = 'abc' # 重新赋一个其他类型的数据
print(a)
2.同时定义多个变量
- 1)同时定义多个变量赋相同的值: 变量名1 = 变量名2 = 变量名3 = … = 数据
x = y = z = 100
print(x, y, z)
# x = 100
# y = 100
# z = 100
- 2)同时定义多个变量赋不同的值:变量名1,变量名2,变量名3,… = 数据1,数据2,数据3,…
注意:=后面数据的个数必须和前面变量的个数保持一致
m, n = 10, 20
print(m, n)
# a1,a2,a3 = 10, 20, 30, 40
# 练习:交换两个变量的值
# 方法1:
a = 100
b = 200
c = a
a = b
b = c
print(a, b)
# 方法2:
a = 100
b = 200
a, b = b, a # a, b = 200, 100
print(a, b)
*3.变量保存数据的底层逻辑
- 定义变量的时候会自动在内存中申请空间保存数据
- 原理:定义变量的时候会自动申请内存,内存的大小由数据的大小决定;重新给变量赋值,会重新根据新的数据申请新的内存。
1)问题1:为什么Python定义变量不用说明类型
答:python重新定义变量时,会重新申请新的内存。
2)问题2:为什么Python给变量重新赋值的时候可以赋不同类型的数据
答:python的内存不是固定不变的,重新申请的内存就不需要固定类型。
3)问题3:为什么Python可以直接计算并且保存9999 ** 9999的计算结果
答:python的内存由数据的大小决定。
02数学运算符
- 数学运算符:+(加)、-(减)、*(乘)、/(除)、//(整除)、%(取余,取模)、**(幂运算)
1. +(加)、-(减)、*(乘)、/(除)
# Python中的+、-、*、/和数学中的+、-、×、÷的功能一样
print(5 + 2)
print(5 - 2)
print(5 * 2)
print(5 / 2)
2.//(整除)
- x // y ——求x除以y的商,商向小取整(找和小数相邻的两个整数中较小的那个)
print(5 // 2) # 2; 2 2.5 3
print(-5 // 2) # -3; -2 -2.5 -3
- 应用1:希望能整除的情况下商是整型
print(4 / 2) # 2.0
print(int(4 / 2)) # 2
print(4 // 2) # 2
- 应用2:去掉(砍掉)一个整数的低位数,保留高位数
num = 2342
print(num // 10) # 234
print(num // 100) # 23
3.%(取余、取模)
- x % y ——求x除以y的余数
print(5 % 2)
print(15 % 4)
- 应用1:判断两个数字之间的整除关系——判断余数是否为0
print(71 % 2)
- 应用2:去掉高位数,保留低位数
num = 27283
print(num % 10) # 3
print(num % 100) # 83
# 练习:获取任意一个正整数的十位数
num = 82967
# 方法1:
print(num // 10 % 10)
# 方法2:
print(num % 100 // 10)
4.**(幂运算)
- x ** y ——求x的y次方
print(2 ** 3)
print(5 ** 4)
print(16 ** 0.5)
print(2**-3)
5.注意:
- /的结果一定是浮点数;其他运算符的运算结果的类型和运算对象有关
print(10 + 3.0) # 13.0
print(2.5 * 2) # 5.0
print(5 / 1)
03比较运算符
- 比较运算符:>、<、==(等于)、!=(不等于)、>=、<=
1.所有的比较运算符的运算结果都是布尔值
print(10 > 30)
print(10 < 30)
print(10 == 30)
print(10 == 10)
print(10 != 10)
print(10 >= 10)
age = 13
print('是否成年:', age >= 18)
num = 89
# 判断num对2取余的结果是否为0
print('是否是偶数:', num % 2 == 0)
2.python的比较运算符直接连写表示范围
x = 2
print('x是否在0~1之间:', 0 <= x <= 1)
04逻辑运算符
- 逻辑运算符:and(逻辑与运算)、or(逻辑或运算)、not(逻辑非运算)
单一条件: 如果下雨; 如果温度高于35度
复合条件: 并且(要求多个条件同时成立)、或者(要求多个条件中只要有一个条件成立就行)
1.and(逻辑运算符)
- 应用场景:如果需要多个条件同时满足,就用and连接。相当于生活中的"并且"
- 运算规则:条件1 and 条件2 —— 如果两个条件都成立结果是True,只要有一个不成立结果就是False
True and True - True
False and True - False
True and False - False
False and False - False
# 练习:写条件判断num是否是大于10的偶数
num = 4
# 分析条件的类型:看是单一条件还是复合条件
# 所有的条件:大于10(num>10)、是偶数(num % 2 == 0)
# 分析连接方式:num>10 and num % 2 == 0
print('num是否是大于10的偶数:', num > 10 and num % 2 == 0)
# 练习:写条件判断num是否能同时被3和7整除
num = 14
# 类型:复合
# 能被3整除(num % 3 == 0)、能被7整除(num % 7 == 0)
print('num是否能同时被3和7整除:', num % 3 == 0 and num % 7 == 0)
# 方法2:
print('num是否能同时被3和7整除:', num % 21 == 0)
2.or(逻辑或)
- 应用场景:如果要求多个条件中有一个条件成立就行,就用or连接;相当于生活中的或者
- 运算规则:条件1 or 条件2 - 如果两个条件都不成立结果就是False,只要有一个条件成立结果就是True
True or True - True
False or True - True
True or False - True
False or False - False
# 练习:判断num是否能被3或者5整除
num = 23
# 能被3整除:num % 3 == 0
# 能被5整除: num % 5 == 0
print('num是否能被3或者5整除:', num % 3 == 0 or num % 5 == 0)
# 练习:判断year是否是闰年
"""
闰年分为世纪闰年和普通闰年两种:
世纪闰年:能被400整除的年 (year % 400 == 0)
普通闰年:能被4整除但是不能被100整除 ( year % 4 == 0 and year % 100 != 0)
能被4整除: year % 4 == 0
不能被100整除: year % 100 != 0
"""
year = 2000
print('year是否是闰年:', (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0))
*3.not(逻辑非)
- 应用场景:对指定的条件进行否定(如果一个条件正向写情况很多很复杂,反向却非常简单,就可以将条件反向写再加not)
- 运算规则:not 条件
not True - False
not False - True
# 年龄不大于18
age = 19
print(not age > 18)
print(age <= 18)
# 判断num不是偶数
num = 801
print('num是否不是偶数:', not num % 2 == 0)
print('num是否不是偶数:', num % 2 != 0)
# 练习:判断num是否不能同时被3和7整除
num = 21
print('num是否不能同时被3和7整除:', not num % 21 == 0)
print('num是否不能同时被3和7整除:', num % 21 != 0)
05赋值运算符
- 赋值运算符:=、+=、-=、*=、/=、%=、//=、**=
- 注意:所有赋值运算都是用来给变量赋值的,所以赋值运算表达式没有结果(不能提供一个数据)
1.=(直接赋值)
- 变量 = 数据 :将数据保存到变量中,变量既可以是已经定义过的变量,也可以是没有定义过的变量
2.复合赋值运算符
- 变量 += 数据: 先将变量中的数据取出来,然后和后面的数据进行加法运算,然后将计算结果再赋值给变量。(变量必须是已经定义过的变量,并且里面保存的数据,可以和后面的数据进行加法运算)——>这里只用+=举例说明,其他如-=与其道理相同。
a = 20
a += 10 # a = a + 10 -> a = 20 + 10 -> a = 30
print(a) # 30
a -= 5 # a = a - 5 -> a = 30 - 5 = 25
a *= 2 # a *= 2 -> 25 * 2 -> a = 50
a %= 3 # a = a % 3 -> a = 50 % 3 = 2
print(a)
print(10 + 20)
print(10 > 20)
age = 19
print(age >= 18 and age <= 28)
# 所有的赋值数据都是没有结果,无法提供数据
# print(a = 10)
# print(age += 20)
# a = (b = 1)