运算符
算术运算符
运算符 | 描述 | 说明 |
---|---|---|
+ | 加 | 两个数据进行相加 |
- | 减 | 两个数据进行相减 |
* | 乘 | 两个数据进行相乘 |
/ | 除 | 两个数据相除 结果是浮点类型的 |
// | 取整 | 两个数相除,结果对商进行向下取整【整数类型的】 [shift+回车 单元格中换行] 向下取整:小于或者等于商且最接近于商的整数 |
% | 取余 | 两个数相除之后的余数 |
** | 指数 | 两数求幂数 x**y y是N的话,就是求的x的N次方,如果y是(1/N),表示对x开N次方,注意的是开方的结果是浮点型的 |
()
提高表达式的优先级算术运算符中
**
优先级别是最高的,比正负逗号布尔类型的数据与整数或者小数参与算术运算时,True被当做1,False被当做0
字符串类型的数据也可以使用算术运算符中的一些符号,比如
+
,*
,%
+
: 在字符串中完成的是字符串的拼接,形成一个新的字符串 【注意事项:只能字符串与字符串类型数据进行拼接】
*
:将字符串对象乘以的一个正整数N,将字符串的内容重复N次,形成一个新的字符串
%
:格式化字符串,已知一段文本的内容格式,但是内容中有不确定的数据需要填充,我们可以在字符串中使用%s
,%d
,%f
在未知的位置进行占位, 然后对字符串进行%
运算,在%
后面填充数据,前面有几个占位符,就填充几个数据。【%s
可以填充任意类型的数据,%d
填充整型数据 ,%f
填充的是一个浮点型数据】
%.nf
表示填充的数据要保留n位小数
%0nd
按照n位数来格式化数据,不足n位数 前面补0
# 在正常计算时 加减乘除和求余是比较正常的计算操作
# 1. 正常的四则运算 可以使用数值变量或数值字面量参与运算
print(1+1)
print(2-1)
print(10*10)
print(9/3) # 除数不能为0
print(10%2)
# 2. 在python中 除法的计算结果时小数,如果仅需要整数的话需要使用 // 取整计算 小数计算时需要取整也是一样使用
print(9//3)
# 3. 快捷计算某个数的次方 **
print(2**3)
# 4. 在计算时如果要提高某个表达式的计算等级 可以添加小括号
print((2+3)*5)
# 5.布尔类型数据在参与计算时 True被当做1 False被当做0
print(True + 1)
print(False + 1)
# 6. 字符串的操作我们在讲输入输出时来完善
赋值运算符
运算符 | 描述 | 说明 |
---|---|---|
= | 赋值运算符 | 变量名 = 数据值 将等号右边的数据赋值给等号左边的变量名 |
运算符 | 描述 | 说明 |
---|---|---|
+= | 加法赋值运算符 | c += a 等效于 c = c + a |
-= | 减法赋值运算符 | c -= a 等效于 c = c - a |
*= | 乘法赋值运算符 | c *= a 等效于 c = c * a |
/= | 除法赋值运算符 | c /= a 等效于 c = c / a |
%= | 取模赋值运算符 | c %= a 等效于 c = c % a |
**= | 幂赋值运算符 | c **= a 等效于 c = c ** a |
//= | 取整除赋值运算符 | c //= a 等效于 c = c // a |
:= | 海象运算符 | 作用是定义一个变量的同时,让变量再参与其他运算 |
# 赋值运算符
# 1. 定义变量时,将数据存储到变量中
a = 10
print(a) # a这个变量中存储10这个数据
# 2. 提供表达式计算时
sum = a + 10 # 因为 赋值运算符是一个右结合运算符,所以会先计算等号右边的数据然后再赋值等号左边
print(sum) # sum 等于20
# 复合运算符 因为复合运算符逻辑都是都是一样的所以仅举例一个,剩余运算符参考举例即可
"""
复合运算符的场景就是当遇到某个数据需要计算之后在赋值给原有变量时所提供的一种简便计算写法
例如: 定义一个a变量赋值为1 ,然后a变量+1之后在赋值给a变量
"""
# 普通做法
a = 1 # a 赋值为1
a = a+1 # a变量+1计算之后在赋值给a
print(a)
# 复合运算符的简便写法
a = 1
a += 1 # 这里 += 就是复合运算符 a +=1 等价于 a = a+1
print(a)
# 需要注意的是 如果复合运算符的右边有表达式存在 要先计算表达式然后再进行其他运算
a = 3
a *= 3+2 # a *= 3+2 等价于 a = a*(3+2) 即 a = 3*(3+2)
print(a) # 最终a的计算结果时 15 而不是11
# 海象运算符 是python3.8中开始提供的运算符 它作用是在定义变量的同时参数计算
start = input("Do you want to start(y/n)?")
print(start == "y")
# 但是使用海象运算符,我们可以使其更紧凑。
print((start := input("Do you want to start(y/n)?")) == "y")
比较运算符
运算符 | 描述 | 说明 |
---|---|---|
== | 判断内容是否相等,满足为True,不满足为False | 如a=3,b=3,则(a == b) 为 True |
!= | 判断内容是否不相等,满足为True,不满足为False | 如a=1,b=3,则(a != b) 为 True |
> | 判断运算符左侧内容是否大于右侧 满足为True,不满足为False | 如a=7,b=3,则(a > b) 为 True |
< | 判断运算符左侧内容是否小于右侧满足为True,不满足为False | 如a=3,b=7,则(a < b) 为 True |
>= | 判断运算符左侧内容是否大于等于右侧满足为True,不满足为False | 如a=3,b=3,则(a >= b) 为 True |
<= | 判断运算符左侧内容是否小于等于右侧满足为True,不满足为False | 如a=3,b=3,则(a <= b) 为 True |
# 比较表运算符 --》 比较运算符最终计算出的结果是bool类型
#数字比较
a1 = 10
b1 = 10
print(a1 == b1)
a2 = 3.14
b2 = 3.15
print(a2 >= b2)
"""需要注意:在python中没字符的概念存在,所以无论使用单或双引号括起来的都是字符串,使用比较运算符计算时比较的是文本内容,即对应ASCII和Unicode值"""
a3 = 'a'
b3 = 'a'
print(a3.__eq__(b3))
a3_1 = 'A'
b3_1 = 'a'
print(a3_1 > b3_1)
a3_2 = '我'
b3_2 = '我'
print(a3_2 >= b3_2)
# python允许在进行范围比较的时候,使用连续比较的方式
score = 90
print(60 <= score <= 100)
逻辑运算符
运算符 | 描述 | 说明 |
---|---|---|
and | 逻辑与,连接的表达式之间是并且的关系,也就是需要两个表达式同时成立,结果才是成立的,有一句总结是 一假则全假 根据总结,逻辑与有短路原则:左边表达式为假,右边表达式不参与运算 这个短路只针对与and有效,后面有其他的逻辑表达式还是会执行的 | False and False = False False and True = False True and False = False True and True = True |
or | 逻辑或,连接的表达式之间是或者的关系,也就是其中一个表达式成立,结果就是成立的,有一句总结是 一真则全真 根据总结,逻辑或有短路原则:左边表达式为真,右边表达式不参与运算 这个短路是真短路,后面所有的表达式都不会执行了 | False or False = False False or True = True True or False = True True or True = True |
not | 逻辑非,对逻辑结果取反的,真变假,假变真 优先级别比and和or高 | not False = True not True = False |
# 逻辑运算符 --> 使用逻辑运算符列出逻辑表达式
# 1:参加少年运动会的运动员的年龄在13~17之间)
age >= 13 and age <= 17
# 2:(动物园年龄小于12,大于65的老人免票)
age < 12 or age > 65
# 3:(年龄不小于16岁的人才可以观影)
not age < 16 或者 age >= 16
# 4:构造一个表达式来表示下列条件:
# a:number等于或大于90,但小于100
number >= 90 and number < 100
# b:ch不是字符q也不是字符k
ch != 'q' and ch != k
# c:number界于1到9之间(包括1不包括9),但是不等于5
(number >= 1 and number < 9) and number != 5
# d:number不在1到9之间
number < 1 or number > 9 或者 not (number>=1 and number<=9)
# 5:判断这个字符是空格,是数字,是字母
ch == ' '
ch >= '0' and ch <= '9'
(ch >= 'A' and ch <= 'Z') or (ch >= 'a' and ch <= 'z')
# 6:有3个整数a,b,c,判断谁最大,列出所有可能
a > b and a > c
b > a and b > c
c > a and c > b
# 7:判断year表示的某一年是否为闰年,用逻辑表达式表示。闰年的条件是符合下面二者之一:a:能被4整除但不能被100整除 b:能被400整除
(year%4==0 and year%100!=0) or (year%400==0)
需要注意:算数运算符优先级>比较运算符优先级>逻辑运算符优先级>赋值运算符优先级
位运算符
位运算符只能对两个整数进行运算,顾名思义,就是对每一位的数字进行运算。但是需要注意的是,所有的数据再计算机中进行存储和运算的时候,都是以补码的形式进行的。位运算也不例外。位运算的计算逻辑是:
- 计算参与运算的两个数字的二进制补码
- 对补码的每一个位的数字(0或1)进行类似于逻辑运算的处理,1相当于True,0相当于False
# 位运算符
# 位:比特位,也就是二进制中的每一位
# 位运算,只针对于整型数字,运算逻辑是将两个整型数字求出补码,对补码的每一位进行"逻辑"运算
# & : 位与运算
# | : 位或运算
# ~ : 位反运算
# ^ : 位异或运算
"""
13: 0000 1101
15: 0000 1111
-------------
0000 1101 => 13
"""
print(13 & 15)
"""
-10: 1111 0110
9: 0000 1001
--------------
1111 1111 => 1000 0001 => -1
"""
print(-10 | 9)
"""
10 : 0000 1010
--------------
1111 0101 => 1000 1011 => -11
"""
print(~10)
"""
10: 0000 1010
13: 0000 1101
-------------
0000 0111 => 7
"""
print(10 ^ 13)