day2-变量和运算符
1同时定义多个变量
- 1.同时定义多个变量赋相同的值:变量名1 = 变量名2 = 变量名3 = … = 数据
例如:
x = y = z = 0
-
2.同时定义多个变量赋不同的值:
变量名1, 变量名2, 变量名3,… = 数据1, 数据2, 数据3, …
例如:
name, age, gender = '小明', 30, '男'
-
3.变量重新赋值
重新给变量赋值以后,变量中保存的是最新的值,使用变量时使用的是变量中最新的值
-
4.Python定义变量和重新给变量赋值的原理
Python在定义变量的时候会先申请内存保存数据,内存申请的大小看被保存的数据多大,重新给变量赋值的时候,会申请新的内存,新的内存的大小由新的数据的大小决定,然后变量会和新的内存关联,原来的内存会自动销毁
注:id(变量):获取变量对应的内存地址
例如:
num = 100
print(id(num))
num = 1000
print(id(num))
2数学运算符
-
1.数学运算符:+,-,*,/,%,//,**
1)数学运算符中的+,-,*,/ 和数学中的 +,- ,x,÷的功能一模一样
注意:除法运算的运算结果是浮点型
例如:
print(10 + 20)
print(2 - 5)
print(3 * 5)
print(5 / 2)
2)取余:%
x % y ------------ 求x除以y的余数
例如:
print(10 % 3) # 1
print(15 % 3) # 0
print(9 % 2) # 1
判断两个数是否存在整除关系 - 判断两个数的余数是否为0
例如:
print(10 % 2)
print(25 % 5)
取余应用二:取整数低位数
一个整数对10取余,能够获取该整数的个位数
一个整数对100取余,能够获取该整数的后两位数
一个整数对1000取余,能够获取该整数的后三位数
例如:
num = 12345
print(num % 10) # 5
print(num % 100) # 45
print(num % 1000) #345
3)整除://
求商的部分,保留整数部分 整数(商向下取整)
例如:
print(5 // 2) # 2
print(-5 // 2) # -3
整数应用场景:去掉低位数
一个整数对10整除,能够去掉该数的个位数
一个整数对100整除,能够去掉该数的后两位数
一个整数对1000整除,能够去掉该数的后三位数…
例如:
num = 2342
print(num // 10) # 234
print(num // 100) #23
print(num //1000) #2
4)幂运算:**
x ** y ---- 求x得y次方
例如:
print(2 ** 3) # 8
print(3**2) # 9
print(9 ** 0.5) # 3
print(8 ** (1/3)) # 2
3比较运算符
-
1.比较运算符: >, <, ==, !=, >=, <=
所有得比较运算符得运算结果都是布尔值
例如:
print(10 > 20) # False
print(10 < 20) # True
print(10 == 20) # False
Python中的比较运算符支持连写表示范围
例如:
x = 0.5
print(0 <= x <= 1)
4逻辑运算符
逻辑运算符:and(逻辑与), or(逻辑或), not(逻辑非)
- 1.and
"""1)应用场景:用于需要多个条件同时满足的情况
2)运算规则:条件1 and 条件2 ----------两个条件结果都为True结果才为True,只要有 一个条件结果为False结果就为False
True and True ---> True
True and False ---> False
False and True ---> False
False and False ---> False
"""
num = 21
print('能否被3和7同时整除:', num % 3 == 0 and num % 7 == 0)
print('能否被3和7同时整除:',num % 21 == 0)
- 2.or
"""
1)应用场景:用于需要多个条件只要有一个满足条件就行的情况
2)运算规则:条件1 or 条件2 ---- 两个条件中只要有一个条件结果为True,结果就为 True,当两个条件结果都为False结果才为False
True or True ---> True
True or False ---> True
False or True ---> True
False or False ---> False
"""
num = 20
print('是否能被5或者7整除:',num % 5 == 0 or num % 7 == 0)
num = 1997
print('闰年:',num % 4 == 0 and num % 100 != 0 or num % 400 == 0)
- 3.not
"""
1)应用场景:(对某一个条件进行否定)如果正向写条件,条件很多很复杂,反向写很简单,条件就反向写再加not
2)运算规则: not 条件 ----- 对条件进行取反操作
not False ---> True
not True ---> False
"""
# 练习:写出判断一个数不能被3和7整除的条件
# 条件正向写:
# 1)能被3整除不能被7整除:num % 3 == 0 and num % 7 != 0
# 2)能被7整除不能被3整除:num % 3 != 0 and num % 7 == 0
# 3)既不能被3整除也不能被7整除:num % 3 != 0 and num % 7 !=0
print((num % 3 == 0 and num % 7 != 0) or (num % 3 != 0 and num % 7 == 0) or (num % 3 != 0 and num % 7 !=0))
# 条件反向写
# 能同时被3和7整除:num % 21 == 0
# 不能同时被3和7整除:not num % 21 == 0
print(not num % 21 == 0)
5逻辑运算符的扩展
# 1.短路操作:某条语句不执行
"""
条件1 and 条件2
and的短路:如果条件1为False,则条件2对应的代码不执行
条件1 or 条件2
or的短路:如果条件1为True,则条件2对应的代码不执行
"""
# 2.逻辑运算符的通用运算规则
"""
1) and
数据1 and 数据2
2)or
数据1 or 数据2
3)not
"""
print(True and 100) #100
print(False and 100) #False
print(False or 100) #100
print(True or 100) #True
print(7 and 8) # 8
print(7 or 8) # 7
# (记住)重要结论:python中任何类型的数据都可以转换成布尔值(都有布尔值),其中零值和空值是False,其他都是True
6赋值运算符
- 1.赋值运算符:=,+=,-=,*=,/=,%=,//=,**=
- 1)赋值运算符的作用不是计算一个结果,而是将数据保存到变量中
- 2)所以的赋值运算符的左边必须是变量
- 2.=
- 变量 = 数据
- 3.+=,-=,*=,/=,%=,//=,**=
- 变量 += 数据 ------- 将变量中保存的数据和 +=后面的数据进行加法操作,将运算结果重新赋值给变量(其他的 -=,*=,/=,%=,//=,**=和+=的操作一样)
例如:
sum = 12
sum += 10 #相当于sum = sum +10
注意:所有的赋值运算是没有结果的
8运算符的优先级
- 1.运算符的优先级:数学优先级 > 比较运算符 > 逻辑运算符 > 赋值运算符(最低)
- 2.数学运算符中:** > * , /, %, // > +, -
- 3.有括号先算括号里面的
- 4.如果有布尔数据参与了数学运算,那么False当成0,True当成1
例如:
result = 100 + (10 > 20)
print(result) # 100
result = 100 + (10 < 20)
print(result) # 101