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("平年")