1.运算符
1.1 运算符的概念
运算符⽤于执⾏程序代码运算,会针对⼀个以上操作数项⽬来进⾏运算。例 如:2+3,其操作数是2和3,⽽运算符则是“+”
1.2 运算符的分类
算术运算符
赋值运算符
比较运算符(关系运算符)
逻辑运算符
条件运算符(三元运算符)
2. 算术运算符
加法运算符 表现形式 +
加法运算符
a=1+2
b='1'+'2'
print(a) # 3
print(b) # 12
print(type(b)) # <class 'str'>
# 可以用做字符串的拼串
减法运算符 表现形式 -
减法运算符
a=1-2
b='1'-'2'
print(a) #-1
print(b) # 报错,字符串不能做减法运算
**乘法运算符 表现形式 ***
乘法运算符
a=2*3
b='2'*'3'
c='2'*3
print(a) # 6
print(b) # 报错
print(c) # 222 相当于'2'+'2'+'2'
除法运算符 表现形式 /
除法运算符
a=6/2
print(a,type(a)) # 3.0 <class 'float'>
# 除法运算符返回的是 浮点数类型
# 字符串不能在除法运算符中使用
整除 表现形式 //
整除,只会保留计算后的整数位,总会返回⼀个整型 表现形式 //
a=6//3
print(a,type(a)) # 2 <class 'int'>
# 整除返回整数类型
取模 表现形式 %
取模,求两个数相除的余数
a=7%3
b=7%4
print(a,b,type(a),type(b)) # 1 3 <class 'int'> <class 'int'>
幂运算 表现形式 **
幂运算,求⼀个值的⼏次幂
a=2**4
print(a,type(a)) # 16 <class 'int'>
3. 赋值运算符
1. 复制运算符的特殊写法 x = x + 3 其实是和 x += 3 是⼀样的
2. += (x+= 3 相当于 x = x + 3 )
3. -= (x -= 3 相当于 x= x - 3 )
4. *= (x = 3 相当于 x = x 3 )
5. **= (x **= 3 相当于 x = x ** 3 )
6. /= (x /= 3 相当于 x = x/ 3 )
7. //= (x //= 3 相当于 x = x // 3 )
8. %= (x %= 3 相当于 x= x % 3 )
4. ⽐较运算符
比较运算符用来比较两个值之间的关系,总会返回⼀个布尔值.如果关系成 ⽴,返回True,否则返回False。
例如
a=2>3 # False
b=3>2 # True
print(a,b) # False True
>= 比较左侧的值是否⼤于或等于右侧的值
< 比较左侧值是否小于右侧值
<= 比较左侧的值是否小于或等于右侧的值
特殊的比较⽅式
== 比较两个对象的值是否相等
!= 比较两个对象的值是否不相等
is 比较两个对象是否是同⼀个对象,比较的是对象的id
is not 比较两个对象是否不是同⼀个对象比⽐较的是对象的id
例如
a=0==False
b=0 is False
print(a) # True
print(b) # False
5. 逻辑运算符
5.1 not 逻辑 非
not可以对符号右侧的值进行 非 运算,对于布尔值,非 运算会对其进行取反操 作,True变False,False变True
例如:逻辑非 0 空串 还有一些表示空性的值会转换为False,其余的全部都是True
a=1
a=not a
print(a) # False
# 因为不是空性的值所以是True,但经过not(取反后)是False
b=0
b=not b
print(b) # True
# 因为是空性的值所以是False,但经过not(取反后)是True
5.2 and 逻辑 与
and可以对符号两侧的值进⾏与运算。 只有在符号两侧的值都为True时,才 会返回True,只要有⼀个False就返回False。
与运算是找False的
5.3 or 逻辑 或
或运算两个值中只要有⼀个True,就会返回True
或运算是找True的
5.4 非布尔值的与或运算
当我们对非布尔值进⾏与或运算时,Python会将其当做布尔值运算,最终会 返回原值
5.4.1.非布尔值 与 运算的规则
与运算是找False的,如果第⼀个值为False,则不再看第⼆个值直接输出第一个,假如第一个是True,那么直接输出第二个值
# 与运算是找False的,如果第⼀个值为False,则不再看第⼆个值直接输出第一个,假如第一个是True,那么直接输出第二个值
a=2
b=1
c=a and b
print(c) # 1
# 2 and 1 因为2和1不是空性的值所以都是True,则直接输出第二个值 1
5.4.2.非布尔值 或 运算的规则
或运算是找True的,如果第⼀个值是True,则不看第⼆个值。如果第⼀个 值是True,则直接返回第⼀个值,否则返回第⼆个值
a=1
b=3
c=a or b
print(c) # 1
# 如果第⼀个值是True,则不看第⼆个值,直接返回第一个值
6. 条件运算符(三元运算符)
条件运算符在执⾏时,会先对条件表达式进⾏求值判断 如果判断结果为True,则执⾏语句1,并返回执⾏结果 如果判断结果为False,则执⾏语句2,并返回执⾏结果 语法: 语句1 if 条件表达式 else 语句2
7. 运算符的优先级
8.变量在内存中的原理
# 整数 不可变类型 当值强制改变的时候 id会改变
a=15
b=15
print(id(a),id(b)) # 1423142352 1423142352
# 字符串 不可变类型 当值强制改变的时候 id会改变
str1='你好'
str2='你好'
print(id(str1),id(str2)) # 2980924092064 2980924092064
# 列表 可变类型 当值发生改变的时候 id不会改变
list1=[1,2,3,4,5]
list2=[1,2,3,4,5]
print(id(list1),id(list2)) # 2404937742408 2404937742472
# 浅拷贝
# 只能拷贝数据类型的第一层数据
a='abv'
list_1=[1,2,3,4,a]
list_2=list_1.copy()
print(id(list_1),id(list_2)) # 3012676925704 3012676925640
print(id(list_1[4]),id(list_2[4])) # 3012676911712 3012676911712
作业
第一题作业
# 以4种格式化字符串的⽅式来实现 521 xxx 嫁给我好吗?
# 1.拼串
str1='521 '+'python '+' 嫁给我好吗?'
print(str1)
# 2.传参
str1='521'
str2='python'
str3='嫁给我好吗?'
print(str1,str2,str3)
# 3.%s,占位符
str1='521 %s 嫁给我好吗?'
print(str1%'python')
# 4.%f 浮点数占位
a='python'
str1=f'521 {a}嫁给我好吗?'
print(str1)
# 521 python 嫁给我好吗?
# 521 python 嫁给我好吗?
# 521 python 嫁给我好吗?
# 521 python嫁给我好吗?
第二题作业
# 现在有a b c三个变量,三个变量中分别保存有三个数值,请通过条件运算符获取三个值中的最⼤值
a=500
b=20
c=990
result=(a if a>b else b) if (a if a>b else b) > c else c
print(result) # 990