2022年 11月 9日

Python运算符

目录

一、算数运算符

 二、比较运算符

 三、赋值运算符 

 四、逻辑运算符 

 五、位运算符

 六、成员运算符

七、身份运算符 

八、三目运算符

九、运算符优先级


​​​​​​​

一、算数运算符

算数运算符列表:

运算符的运用:

(加减运算符)只要参与运算的有浮点数,返回类型为float
  1. print(1 + 0.5) #1.5 返回类型为float
  2. print(3 - 2.0) #1.0,只要参与运算的有浮点数,返回类型为float

(乘法、幂(次方)运算)

  1. print(3 * 3) #*:乘号
  2. print(3 ** 4) #**:次方
  3. print(50-5*6) #20
  4. print((50-5*6)/4) #5.0 有括号,括号优先
  5. print(10-2*3) # 先算乘法,在计算减法,计算顺序一样
  6. # *跟字符串做搭配
  7. print('------------------------------------------')
  8. print('-'*50) # 打印50个 -

(除法运算)除法运算返回浮点数

  1. print(10 / 2) # 除法运算,5.0除法运算返回的都是浮点型
  2. print(9 / 3) #/: 除以,返回时浮点数3.0
  3. print(10 / 3) # 计算机(二进制010101) 二进制的有穷性(了解)输出3.3333333333333335

 (整除运算)整除,向下取整数,所取整数比实际结果要小的一个整数,注意:-10//3,出现负数时的情况

  1. print(9 // 4) # 整除,向下取整,比实际结果要小的整数,输出结果:2
  2. print(9 // 2) # 4
  3. print(10 // -3) # 输出-4,和上代码一样,向下取整,-4比-3小,故输出-4
  4. print(10 // 3) #//:整除 向下取整 3.3333333333333335 取3
  5. print(-10 / 3) #-3.3333333333333335
  6. print(-10 // 3) #-3.3333333333333335-->向下取整 -4

(求余数运算)计算出模,返回除法余数

  1. print(10 % 3) # %:模
  2. print(10 % 3) #%:模,取整10//3=3余1 3*3=9 10-9=1
  3. print(-10 % 3) # -10//3=-4 -4*3=-12 -10-(-12)=2

(商和余数)

  1. x = 10
  2. y = 3
  3. print(divmod(x,y)) #divmod(x,y)-->(x//y,x%y)-->(商,余数)

(数值精确问题的解决)在计算机中会出现例如:5.4-3=2.40000000000004等情况,这是计算机转换为二进制,结果以十进制呈现,计算时出现的精确误差,为了解决误差选择用内置模块decimal 代码如下:

  1. print(5.4-3) #2.4000000000000004并不是python的bug,而是因为在计算机中做计算需要转为二进制
  2. # 当计算完之后,又将结果转为十进制呈现,所以产生的精准误差。
  3. # 解决精度问题,内置模块decimal
  4. # 导入decimal模块
  5. # import decimal # 导入decimal模块
  6. from decimal import Decimal #从decimal模块中导入Decimal类
  7. print(Decimal('5.4')-Decimal('3')) #2.4
  8. print(Decimal(5.4)-Decimal(3)) #2.400000000000000355271367880精确值更准
  9. num = Decimal('5.4')-Decimal('3')
  10. print(float(num)==2.4)
  11. print(type(num))
  12. """输出true"""

 二、比较运算符

 比较运算符列表:

  比较运算符返回bool类型(True  False)True–>1  False–>0

(比较值是否相等 ==)

True可以看作数值1,False看作0,用==比较两个值是否相等,返回bool,在比较运算符中比较的是数值,字符串相加是做拼接

  1. # 比较运算符 返回的都是bool类型(True False)
  2. print(True==1) # ==比较两个值是否相等,返回bool值
  3. print(False==0) # True
  4. print(True + 1) # True可以看做数值1,参与运算。输出:2
  5. print(False + 1) # False看做数值0,也参与运算。输出:1
  6. print(2.0==2) # True,比较运算符-->比较的是数值
  7. print('2'==2) # False,字符串不是数值,因此是False,字符串相加其实做拼接

 (不等号 !=) 在Python2中用(<>)表示不等于,而python3中<>号已经被废除

  1. a = 1
  2. b = 2
  3. print(a != b) # True 不等号!=
  4. # print(a <> b) # 在Python2当中表示的也是不等于,Python3当中<>号被废除了
  5. # print(a != b) #注意:!=不能分开写

(数值比较)简单的数字进行比较

print(2.5>2)        # True,数值比较

字符串与字符串进行比较,用ASCII进行比较,例如:

  1. # 字符串与字符串作比较,ASCII码比较
  2. print("abc"<"xyz") # True 可以比较,ASCII值比较 97 98 99 < 120 121 122
  3. # 逐个比较,比较出结果就结束
  4. print("ab"<"ac") #True,a>a做不出比较,接着比较b<c,b确实小于c,因此为True
  5. print("ab">"ac") #False
  6. print('a' >= 'a') # True,虽然'a'不大于'a',但是他们相等,因此返回True

注意:只要当第一个元素比较成功以后就结束。即只比较第一个,若第一个做不出比较,就接着比较第二个,以此类推,只要比较结束就出结果,不用考虑后面的元素。ASCII码中A–>65、a–>97

ASCII码对照表:

 注意:int类型不能直接与str类型进行比较

print(3<'a')         # int 与 str 类型不能直接作比较

连续比较:比较的两者都要为True才为True,否则False,比较时仔细看清优先级,例如有小括号等情况(逻辑运算符)

  1. # 连续比较:a>b>c --> a>b and b>c 两者都为True才为True
  2. print(3>2>1) # True
  3. print(3>2>2) # 3>2(True) and 2>2(False)
  4. print((3>2)>1) # 加了小括号优先级。True > 1 -->False
  5. print(True==1) #1不大于1

 三、赋值运算符 

赋值运算符列表:

 赋值运算:将等号右边赋值给等号左边,在Python中不支持Java、c++中的i++或者i–语法

  1. a = 1 # 将等号右边的 赋值 给等号左边的
  2. a = a + 1 # 先等号右边的进行计算,然后,将结果赋值给等号左边的
  3. print(a)
  4. a += 1 # a = a+1
  5. print(a)
  6. # print(a++) #python不支持a++,a--语法
  7. a /= 1 # a=a/1
  8. print(a)

 四、逻辑运算符 

逻辑运算符列表:

 and(与)逻辑:两个都为True才为True,否则为False;or(或逻辑):有一个为True则为True

  1. print(3 > 2 and 2 > 1) # 返回的是bool类型 True and True -->True
  2. print(3 > 2 or 2 > 1) # 返回的是bool类型 Ture and Tue -->True
  3. print(3 > 2 or 2 < 1) # 返回的是bool类型 Ture and False -->True
  4. print(not (3>2)) # not True相反结果就是False
  5. a = True
  6. b = True
  7. c = False
  8. d = False
  9. print(a and b) # True
  10. print(a and c) # False
  11. # 连续比较:a>b>c --> a>b and b>c 两者都为True才为True
  12. print(3>2>1) # True
  13. print(3>2>2) # 3>2(True) and 2>2(False)
  14. print((3>2)>1) # 加了小括号优先级。True > 1 -->False
  15. print(True==1) #1不大于1

 五、位运算符

位运算符列表: 

&–>与 、|–>或 、\wedge–>异或 

 例如:a=60,b=13。取二进制a=00111100

                                               b=00001101

a&b=00001100  两个都为1才为1,否则为0

a|b=00111101      有一个为1则为1

\wedgeb=11001100       两个相同则为1

  1. a=13
  2. b=60
  3. c=a^b #49
  4. print(c)
  5. print(c^a) #60
  6. print(b^c) #13
  7. print(a&b) # 12
  8. print(bin(a&b)) # bin函数,转换为二进制

 六、成员运算符

 in与not in是Python独有的运算符(全部都是小写的字母),用于判断对象是否是某个集合的元素之一,非常好用,并且运行速度很快。返回的结果是布尔值类型的True或者False。

 相关案例:

  1. # 成员运算符in in not
  2. name = "popopolar"
  3. class_li=["蓝机","永恒","小宇","popopolar"]
  4. # 判断popopolar在class_中则返回True
  5. print(name in class_li)
  6. # if name in class_li:
  7. # print("在")
  8. # else:
  9. # print("不在")
  10. # 判断popopolar不在class_li中则返回True
  11. print(name not in class_li)
  12. print('张三' in ['小明','张三','小红']) # True,张三在这个集合中,因此返回True
  13. print('张三' not in ['小明','li','小红']) # True,张三不在这个集合中,因此返回True

七、身份运算符 

 身份运算符(is、is not)也是Python的特色语法(全部都是小写字母)

 注意:is与 == 的区别

1、is用于判断两个变量的引用是否为同一个内存地址(可使用id()查看)

2、== 用于判断两个变量的值是否相等

print(id(a))查看a的内存地址,is判断内存地址是否相同,成立则为True;is not判断内存地址不相同,成立则为True

  1. # 身份运算符is is not
  2. a=[1,2,3]
  3. b=[1,2,3]
  4. print(a is b) # False is比较两者的内存地址(id())
  5. print(a is not b) # True a和b的内存地址不一样,因此返回True
  6. print(id(a)) #2348506224000
  7. print(id(b)) #2348508782720
  8. print(a==b) # True:==是比较值
  9. # 注意:is用于判断两个变量是否为同一个内存地址(可以用id()查看)
  10. # ==用于判断两个变量的值是否相等
  11. # 如果a=b=[1,2,3],则他们的内存地址相等

八、三目运算符

 Python中三目运算符的表示方法:

True_statements if expression else False_statements

三目运算符和if..else相似,而Python中的if…else和Java有区别,在Python中if和else后接了”:”

具体运算:

  1. # 三目运算符True_statements if expression else False statements
  2. a = 1
  3. b = 2
  4. if a+b>3:
  5. print(a+b)
  6. else:
  7. print(b-a)
  8. print(a+b if a+b>3 else b-a) #运用三目运算符处理

九、运算符优先级

 运算符存在着优先级高的运算符优先计算或处理同级别的按从左往右的顺序计算(赋值运算符除外,它是按从右往左的顺序)

运算符优先级列表:

 相关案例:

  1. # 1.运算符有多个,考虑运算符优先级
  2. # 2.==优先级 高于 or优先级 -->类似于(temp == 'Yes')or'yes'
  3. # 3.tmp == 'Yes'-->False
  4. # 4.bool('yes') --> True
  5. # 5.or 只要有一个为True就为True
  6. temp = input('请输入:')
  7. if temp == 'Yes' or 'yes': # ==运算符高于or,因此这里输出True,所以该代码只能输出永远是对的if,而不能输出else
  8. print('if执行了!')
  9. else:
  10. print('else执行了!')