跋山涉水04

04 - 运算符

目录
1. 运算符
1.1 概念
1.2 分类
1.2.1 算术运算符
1.2.2 赋值运算符
1.2.3 比较运算符(关系运算符)
1.2.4 逻辑运算符
1.2.5 条件运算符(三元运算符)
1. 运算符
1.1 概念

运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算。例如: 2 + 3,其操作数是2和3,而运算符则是“+”

1.2 分类
1.2.1 算术运算符
  • 加法运算符 表现形式 +

  • 减法运算符 表现形式 -
    字符串不能相减

  • 乘法运算符 表现形式 *

      ```
      1.x='a'*2
      2.print('x= '+x)                   --->x=aa
      ```
    

    如果将字符串和数字相乘,则会对字符串进行复制操作,或者将字符串重复指定次数;两个字符串不能相乘

  • 除法运算符 表现形式 /

    x=6/2
    print('x= ',x)                            --->x=3.0
    

    除法运算总能返回一个浮点类型(两个整数型数值);两个字符串不能进行相除

  • // 整除,只会保留计算后的整数位,总会返回⼀个整型

    x=7//3
    print('x= ',x)                            --->x=2
    
  • % 取模,求两个数相除的余数

    x=6%4
    print('x= ',x)                            --->x=2
    
  • ** 幂运算,求⼀个值的⼏次幂

    x=2**3
    print('x= ',x)                            --->x=8
    
  • ** 开平方

    x=25**0.5
    print('x= ',x)                            --->x=5
    
1.2.2 赋值运算符
  • += (x+= 3 相当于 x = x + 3 )
    x=2
    x+=3
    print('x= ',x)                            --->x=5
    
  • -= (x -= 3 相当于 x= x - 3 )
    x=2
    x-=3
    print('x= ',x)                            --->x=-1
    
  • *= (x = 3 相当于 x = x 3 )
    x=2
    x*=3
    print('x= ',x)                            --->x=6
    
  • **= (x **= 3 相当于 x = x ** 3 )
    x=2
    x**=3
    print('x= ',x)                            --->x=8
    
  • /= (x /= 3 相当于 x = x/ 3 )
    x=2
    x/=3
    print('x= ',x)                            --->x=0.6666666666666666
    
  • //= (x //= 3 相当于 x = x // 3 )
    x=2
    x//=3
    print('x= ',x)                            --->x=0
    
  • %= (x %= 3 相当于 x= x % 3 )
    x=2
    x%=3
    print('x= ',x)                            --->x=2
    
1.2.3 比较运算符(关系运算符)

a.比较运算符用来比较两个值之间的关系,总会返回⼀个布尔值.如果关系成立,返回True,否则返回False
b.比较左侧值是否大于右侧值
c.大于号(>)比较左侧值是否大于右侧值
d.大于等于号(>=)比较左侧的值是否大于或等于右侧的值
e.小于号(<)比较左侧值是否小于右侧值
f.小于等于号(<=)比较左侧的值是否小于或等于右侧的值

1.result=10>20
2.print('result=',result)                     --->result=False
1.result=30>20
2.print('result=',result)                     --->result=True
1.result=30<20
2.print('result=',result)                     --->result=False
1.result=10<20
2.print('result=',result)                     --->result=True
1.result=10<=10
2.print('result=',result)                     --->result=True

对位比较

1.result='2'>'1'
2.print('result=',result)                     --->result=True
1.result='2'>'11'
2.print('result=',result)                     --->result=True
1.result='a'>'b'
2.print('result=',result)                     --->result=False
1.result='c'<'d'
2.print('result=',result)                     --->result=True
1.result='ab'>'b'
2.print('result=',result)                     --->result=False
#如果出现了多个字符,那我们的比较方式是对位比较  a和b比较,如果没有比较出来,则看第二个
1.result='ab'>'aa'
2.print('result=',result)                     --->True
ord('a'),ord('b'),ord('c'),ord('d')           --->(97, 98, 99, 100)

g.特殊的比较方式

  • == 比较两个对象的值是否相等,比较的是对象的value
    != 比较两个对象的值是否不相等,比较的是对象的value

    1.result=3==3
    2.print('result=',result)                     --->True
    
    1.result='hello'=='hello'
    2.print('result=',result)                     --->False
    
    1.result='abc'=='bcd'
    2.print('result=',result)                     --->True
    
    1.result=1==True
    2.print('result=',result)                     --->True
    
  • is 比较两个对象是否是同⼀个对象,比较的是对象的id
    is not 比较两个对象是否不是同⼀个对象,比较的是对象的id

    1.result = 0 == False
    2.print('result=',result)                     --->True
    
    1.result=0 is False
    2.print('result=',result)                     --->False
    
    1.result=0 is not False
    2.print('result=',result)                     --->True
    
  • 补充

    1.a = 1
    2.b = 1
    3.result=0 is not False
    4.print('result=',result)                     --->result = True
    5.print(a is b)                               --->True
    6.print(id(a),id(b))                          --->1787588046  1787588046
    

    原因:a和b同时指向一个对象

1.2.4 逻辑运算符
  • a. not 逻辑非
    not可以对符号右侧的值进行非运算;对于布尔值,非运算会对其进行取反操作,True变False,False变True

    a=1
    a=not a
    print(a)                      --->False
    
    r=None
    r=not r
    print('r=',r)                 --->r=True
    
    a='hello'
    a=not a
    print(a)                      --->False
    

    结论:0 空串 None 还有一些比如表示空性的值会转换为False

  • b. and 逻辑与
    1.and 可以对符号两侧的值进行与运算。 只有在符号两侧的值都为True时,才会返回True
    2.只要有⼀个False就返回False;与运算是找False的,如果第⼀个值为False,则不再看第⼆个值

    result=True and True
    print('result:',result)                      --->result:True
    
    result=True and False
    print('result:',result)                      --->result:False
    
    result=False and True
    print('result:',result)                      --->result:False
    
    result=False and False
    print('result:',result)                      --->result:False
    

    总结:有False则False

  • c. or 逻辑或
    1.或运算两个值中只要有⼀个True,就会返回True
    2.或运算是找True的

    	result=True or True
    	print('result:',result)                      --->result:True
    
    	result=True or False
    	print('result:',result)                      --->result:True
    
    	result=False or True
    	print('result:',result)                      --->result:True
    
    	result=False or False
    	print('result:',result)                      --->result:False
    
      ==总结:有True则True==
    
  • d.非布尔值的与或运算
    原理:当我们对非布尔值进行与或运算时,python会将其当作布尔值先进行运算,最终返回原值
    1.非布尔值的与运算
    与运算规则:与运算找的是False,如果第一个值是Fasle,则不看第二个值;如果第一个值是False,则返回第一个,否则返回第二个值

    result=1 and 2
    print('result:',result)                      --->result:2
    
    result=1 and 0
    print('result:',result)                      --->result:0
    
    result=0 and 2
    print('result:',result)                      --->result:0
    
    result=None and 0
    print('result:',result)                      --->result:None
    

    2.非布尔值的或运算
    或运算规则:或运算找的是True,如果第一个值是True,则不看第二个值;如果第一个值是True,则直接返回第一个值,否则返回第二个值

    result=1 or 2
    print('result:',result)                      --->result:1
    
    result=0 or 1
    print('result:',result)                      --->result:1
    
    result=1 < 2 and 2 < 3  (1 < 2 < 3)
    print('result:',result)                      --->result:True
    
1.2.5 条件运算符(三元运算符)
  • 语法:语句1 if 表达式 语句2
  • 原理:if 来判断表达式,如果表达式的结果为False,则执行语句2;如果表达式的结果 为True,则执行语句1(即判断表达式是否正确)先对 if 表达式进行求值判断
  1. print('python') if True else print('java')   --->python
    
    print('python') if False else print('java')   --->java
    
  2. a=10
    b=20
    print('a的值比较大') if a>b else print('b的值比较大')  --->b的值比较大
    
  3. #获取a、b之间的最大值
    a = 80
    b = 10
    m = a if a > b else b
    print(m)                      --->m=80
    

ps:条件运算符与条件控制语句是有区别的!!!

  • 运算符的优先级(采用非布尔值的运算)
    例如:a = 2 or 3 and 4 输出结果到底为啥呢?
    推理开始:(推理)
    第一种情况:or、and优先级一样高 ---->4
    第二种情况:or 比 and 优先级高 ---->4
    第三种情况:and 比 or 优先级高 ---->2
    pycharm执行一波,可知输出结果为2~
    想知道其他的优先级,可以参考优先级参照表哦~
    小练习
a=not 4>2 and 5<6 or 3<4
print(a)                                --->True

总结:not 比 and、or 优先级都高

a=not (4>2 and 5<6 or 3<4)
print(a)                                --->False

有括号先算括号里的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值