day3学习总结:
1. 变量
- 重新赋值:给变量重新赋值,可以是不同的,其他类型的值。
- 如以下代码所示:
a = 10 # 将10赋值给a
print(a) # 10
a = 20 # 重新将20赋值给a
print(a) # 20
a = "hello" #再重新将hello赋值给a
print(a) # hello
- 同时定义多个变量
- 同时定义多个变量赋相同的值
- 语句:变量名1 = 变量名2= 变量名3 = … = 数据
- 同时定义多个变量赋不同的值
- 语句:变量名1 ,变量名2,变量名3 ,… = 数据1,数据2,数据3。注意:=后面的个数必须与前面变量的个数保持一致
如以下代码所示:
a = b = c = 5 # 同时定义多个变量赋相同的值
print(a,b,c) # 5 5 5
x,y,z = 10,20,30 # 同时定义多个变量赋不同的值
print(y,x,z) # 20 10 30
- 举例:交换两个变量的值,代码如下:
a = 10
b = 50
a,b = b,a #进行交换
print(a,b) # 50 10
- 变量保存数据的底层逻辑
- 原理:定义变量的时候会自动在内存中申请内存,内存的大小由数据的大小决定,重新给变量赋值,会重新根据新的数据申请新的内存。
2. 运算符
- 数学运算符:+(加),-(减),*(乘),/(除),//(整除),%(取模),**(幂运算)
- Python中的+,-,*,/ 和数学中的+,-,×,÷的功能一样。/的结果一定是浮点数,其他运算符的运算结果的类型和运算对象有关,如下列代码:
print(10 + 5.0) # 15.0 加一个浮点数的结果是浮点数
print(10 * 5.0) # 50.0 乘一个浮点数的结果是浮点数
print(10 - 5.0) # 5.0 减一个浮点数的结果是浮点数
print(10 / 5) # 2.0 /的结果一定是浮点数
- // (整除):商向小取整(找和小数相邻的两个整数中的小的那个)
- 应用1:希望能整除的情况下商是整型。
- 应用2:去掉一个整数的低位数,保留高位数。
- 举例:代码如下:
# 保留千位和百位的数字45
num = 4567
print(num // 100) # 45
- %(取模):X % Y:求x除以y的余数。
- 应用1:判断两个数字之间的整除关系 - 判断余数是否为0.
- 应用2:去掉高位数,保留低位数。
# 保留个位和十位
num = 4567
print(num % 100) # 67
- 举例:// 和 % 的联合应用,代码如下所示:
# 提取百位数的数字6
num = 59614
print(num % 1000 // 100) # 6
# 提取百位数和十位数96
print(num % 10000 //100) # 96
- (幂运算):x ** y :x的y次方
num = 2 ** 3
print(num) # 8
- 比较运算符:包含>(大于),<(小于),>=(大于等于),<=(小于等于),==(等于),!=(不等于)。运算规则跟数学中的运算一样。
- 注意1:所有的比较运算符的运算结果都是布尔值。
- 注意2:Python的比较运算符支持连写表示范围。
举例,如下代码所示:
print(100 >= 90) # True
print(100 <= 95) # False
print(100 != 95) # True
print(40 <= 45 <= 50) # True
num = 89 # 判断数字是否是偶数
print("是否是偶数:",num % 2 == 0) # 是否是偶数: False
- 逻辑运算符:包含and(逻辑与运算),or(逻辑或运算),not(逻辑非运算)
- 复合条件:并且(多个条件同时成立),或(只要有一个条件成立即可)
- and :
- 应用场景:如果需要多个条件同时成立,就用and连接。
- 运算规则:条件1 and 条件2 and … ,如果条件都成立结果是True,只要有一个不成立就是False。如下列代码所示:
num = 15 # 判断num是否是大于10的偶数
print("num是否是大于10的偶数",num > 10 and num % 2 ==0) # False
- or:
- 应用场景:如果多个条件只需要其中一个成立,就用or连接。
- 运算规则:条件1 or 条件2… ,只要有其中一个条件成立就是True,如下:
# 判断一个数能否被3或5整除
num = 12
print("是否能被3或5整除:",num % 3 == 0 or num % 5 == 0) # True
# 判断年份是否是闰年
year = 2020
print("是否是闰年",year % 400 == 0 or (year % 4 ==0 and year % 100 != 0)) # True
- not:
- 应用场景:对指定的条件进行否定(如果一个条件正向写情况很多很复杂,反向比较简单,就可以讲条件反向写再加not)如下所示:
num = 42
print('num是否不能同时被3和7整除:',not num % 21 ==0) # False
- 赋值运算符:=,+=(加等于),-=(减等于),*=(乘等于),/=(除等于),**=(幂等于),%=(模等于),//=(整除等于)
- 复合赋值运算符:先将变量中的数据取出来,然后再和后面的数据进行运算,然后将计算结果在赋值给变量。(变量必须是已经定义过的变量,并且里面的数据,可以和后面的进行运算)
- +=:比如 a += 5,相当于a = a + 5
- -=:比如 a -= 5,相当于a = a - 5
- *=:比如 a *= 5,相当于a = a * 5
- /=:比如 a /= 5,相当于a = a / 5
- %=:比如 a %= 5,相当于a = a % 5
- //=:比如 a //= 5,相当于a = a // 5
- 注意:所有的赋值数据都是没有结果,无法提供数据。
- 综合例子,如下所示:
num = 2
num += 3 # 这一步结果,5
num *= 3 # 这一步结果,15
num %= 4 # 这一步结果,3
num **= 3 # 这一步结果,27
num //= 2 # 这一步结果,13
num /= 2 # 这一步结果,6.5
print(num) # 6.5
- 运算符优先级:数学运算> 比较运算符>逻辑运算符>赋值运算符;如果一个表达式中有多种,谁的优先级高就先算谁。
- 数学运算中:** > *,/,//,% > + ,-
- 注意:有括号先算括号里的。
3. 分支结构
- 程序执行过程:默认情况下,程序从上往下一条条的执行,每一条语句都会执行并且只执行一次。
- 分支结构(if)
- 单分支结构:如果xx就xx(满足某个条件就执行某个操作,不满足就不执行)
- 语法:if 条件语句(可以时任何有结果的表达式,比如具体的数据,运算表达式,只有赋值语句不可以):
代码段(执行的操作)
举例说明,代码如下:
num = 56
if num % 2: # num % 2 == 0 ,0为False,不执行print操作
print("hello")
num = 55
if num % 2: # num % 2 == 1 ,1为True,执行print操作
print("hello") # hello
- 双分支结构:如果xx就xx,否则xxx(满足某个条件就执行某个操作,不满足就执行另一个操作)
- 语法: if 条件语句:
代码段1(满足条件就执行的操作)
else:
代码段2(不满足条件执行的操作)
举例说明,代码如下:
year = 2004
if year % 400 ==0 or (year % 4 ==0 and year % 100 !=0): # 成立,执行成立的条件
print("闰年") # 闰年
else:
print("平年")