• Python运算符及逻辑运算


    基本运算符

    运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算。例如:2+3,其操作数是2和3,而运算符则是“+”。在计算器语言中运算符大致可以分为5种类型:算术运算符、连接运算符、关系运算符、赋值运算符和逻辑运算符。运算符也是计算机里比较好理解的人类语言之一,只要稍微懂点数学的,都能看懂算数运算符。

    在Python中常见的运算符有: +、-、、/、*/<、>、!=、//、%、&、|、^、~、>>、<<、<=、>=、==、not、and、or 。接下来一一介绍这些运算符的具体事例。

    算数运算

    以下假设变量:a=10,b=20

    比较运算

    以下假设变量:a=10,b=20

    赋值运算

    以下假设变量:a=10,b=20

    http://kuanghy.github.io/2016/05/26/python-connect(Python连接符+=、+、-=)

    逻辑运算

    针对逻辑运算的进一步研究:

    1、在没有()的情况下not 优先级高于 and,and优先级高于or,即优先级关系为( )>not>and>or,同一优先级从左往右计算。

    print(3>4 or 4<3 and 1==1)
    print(1 < 2 and 3 < 4 or 1>2 )
    print(2 > 1 and 3 < 4 or 4 > 5 and 2 < 1)
    print(1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 < 8)
    print(1 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6)
    print(not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6)
    
    #输出
    False
    True
    True
    False
    False
    False

    2 、 x or y , x为真,值就是x,x为假,值是y;x and y, x为真,值是y,x为假,值是x。

    非0转换为布尔值是True,0转换为布尔值是False

    print(8 or 4)
    print(0 and 3)
    print(0 or 4 and 3 or 7 or 9 and 6)
    
    #输出
    8
    0
    3

    成员运算

    除了以上的一些运算符之外,Python还支持成员运算符,测试实例中包含了一系列的成员,包括字符串,列表或元组。

    判断子元素是否在原字符串(字典,列表,集合)中:

    print('喜欢' in 'dkfljadklf喜欢hfjdkas')
    print('a' in 'bcvd')
    print('y' not in 'ofkjdslaf')
    
    #输出
    True
    False
    True 

    位运算

    按位取反运算规则(按位取反再加1) 详解http://blog.csdn.net/wenxinwukui234/article/details/42119265

    运算符优先级

    以下表格列出了从最高到最低优先级的所有运算符:

    ---------------------以下是些具体运算---------------------

    python运算符基础实例

    # coding=utf-8
    #两个数字相加
    sumNumber=1+2
    print(sumNumber)      #输出结果:3
     
    #两个字符串相加
    sumString="Nice work"
    print(sumString)      #输出结果:Nice work
     
    #两个数字相减
    subNumber=2-1
    print(subNumber)      #输出结果:1
     
    #两个数字相乘或者字符串重复
    multiplicationNumber=2*3
    print(multiplicationNumber)      #输出结果:6
    multiplicationString="hello"*2
    print(multiplicationString)      #输出结果:hellohello
    #/---关于*号重复字符串之前的博客已经介绍过了---/
     
    #两个数相除
    divisionNumber=9/2
    print(divisionNumber)      #输出结果:4
    divisionNumber=9.0/2
    print(divisionNumber)      #输出结果:4.5
    divisionNumber=9/2.0
    print(divisionNumber)      #输出结果:4.5
    #/---除数或被除数中有任意一个是小数的话,商也会保留小数,反之取整---/
     
    #求幂运算
    powerNumber=2**3 #相当于2的3次幂,就是2*2*2 关于幂运算大家应该在数学里都很熟悉了
    print powerNumber       #输出结果:8
     
    #小于符号,返回值是bool值
    lessThan=1<2
    print(lessThan)        #输出结果:True
    lessThan=1<1
    print(lessThan)        #输出结果:False
     
    #大于符号,返回值是bool值
    moreThan=2>1
    print(moreThan)        #输出结果:True
    moreThan=2>2
    print(moreThan)        #输出结果:False
     
    #不等于符号 返回值是Bool值
    notEqual=1!=2
    print(notEqual)        #输出结果:True
    notEqual=1!=1
    print(notEqual)        #输出结果:False
     
    #除法运算// 返回商的整数部分,抛弃余数
    divisorNumber=10//3
    print(divisorNumber)        #输出结果:3
     
    #除法运算% 返回商的余数部分,抛弃商
    divisorNumber=10%3
    print(divisorNumber)        #输出结果:1
    divisorNumber=10%1
    print(divisorNumber)        #输出结果:0 /--没有余数则返回0--/
    divisorNumberx=10//3         #divisorNumberx是商的整数部分
    divisorNumbery=10%3         #divisorNumbery是余数
    divisorNumberz=3*divisorNumberx+divisorNumbery    #divisorNumberz是除数乘以商的整数部分加上余数,得到的divisorNumberz的值就是被除数
    print(divisorNumberz)        #输出结果:10
     
    #按位与运算&, 按位与是指一个数字转化为二进制,然后这些二进制的数按位来进行与运算
    operationNumber=7&18
    print operationNumber        #输出结果:2
    '''
    这个有点绕,稍微多说下,如果对二进制不是太熟的朋友,可以打开电脑自带的计算器,按住win+q,输入"calculator"。
    然后在打开的计算器设置成程序员模式, 就是View(查看)->>programmer(程序员).
    然后我们将7转为二进制:111,自动补全8位:00000111,然后将18转为二进制补全8位后得到:00010010
    最后将   00000111
    跟       00010010 按位进行与运算,
    /-
    对与运算不熟的朋友可以看看百度百科的介绍,还是很详细的。
    http://baike.baidu.com/link?url=lfGJREBvGCY5j7VdF2OO9n2mtIbSyNUD7lZyyY74QIetguL5lXIQUxY38Yr-p4z4WdUvHUKGjw9CDfagiun2Ea
    -/
    得到结果:00000010
    我们都知道10二进制→十进制=2,所以7跟18的按位与的结果是二进制10(十进制2)
    '''
     
    #按位或运算|, 按位或是指一个数字转化为二进制,然后这些二进制的数按位来进行或运算
    operationNumber=7|18
    print operationNumber        #输出结果:23   #结题思路和按位与运算的一样,可以参考按位与运算
     
    #按位异或
    operationNumber=7^18
    print operationNumber        #输出结果:21   #结题思路和按位与运算的一样,可以参考按位与运算
     
    #按位翻转 ~   按位翻转公式: ~x= - (x+1)
    operationNumber=~12  #~12=- (12+1) = -13
    print operationNumber        #输出结果:-13   #结题思路和按位与运算的一样,可以参考按位与运算
     
    #左移<<
    '''
    比如18左移就是将他的二进制形式00100100左移,得到00100100(36)。
    左移规律:左移一个单位相当于乘2,左移两个单位相当于乘以4,左移三个单位相当于乘以8,
    即:      左移n个单位相当于乘以2的n次幂
    '''
    operationNumber=12<<1
    print operationNumber        #输出结果:24
    operationNumber=3<<3
    print operationNumber        #输出结果:24
     
    #右移>>
    '''
    理解左移以后,右移就很好理解了。
    右移是左移的逆运算,将对应的二进制数向右移动。
    右移规律:右移一个单位相当于除以2,右移两个单位相当于除以4,右移三个单位相当于除以8,
    即:      右移n个单位相当于除以2的n次幂
    '''
    operationNumber=12>>1
    print operationNumber        #输出结果:6
    operationNumber=12>>2
    print operationNumber        #输出结果:3
     
    #小于等于<= 比较运算,小于或等于返回一个bool值
    operationNumber=3<=3
    print operationNumber        #输出结果:True
    operationNumber=3<=2
    print operationNumber        #输出结果:False
     
    #大于等于>= 比较运算,大于或等于返回一个bool值
    operationNumber=2>=3
    print operationNumber        #输出结果:False
    operationNumber=3>=2
    print operationNumber        #输出结果:True
     
    #比较两个对象是否相等==
    operationNumber=3==2
    print operationNumber        #输出结果:False
    operationString="hi"=="hi"
    print operationString        #输出结果:True
     
    #逻辑非 not
    operationx=True
    operationy=not operationx
    print operationy        #输出结果:False
    operationz=False
    print not operationz        #输出结果:True
     
    #逻辑与 and
    '''
    True and True = True
    True and False = False
    False and True = False
    False and False = False
    '''
    print True and True        #输出结果:True
     
    #逻辑或 or
    '''
    True or True = True
    True or False = True
    False or True = True
    False or False = False
    '''
    print False or False        #输出结果:False

    在一个表达式中可能包含多个有不同运算符连接起来的、具有不同数据类型的数据对象;由于表达式有多种运算,不同的运算顺序可能得出不同结果甚至出现错误运算错误,因为当表达式中含多种运算时,必须按一定顺序进行结合,才能保证运算的合理性和结果的正确性、唯一性。

    优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。表达式的结合次序取决于表达式中各种运算符的优先级。优先级高的运算符先结合,优先级低的运算符后结合,同一行中的运算符的优先级相同。

    # coding=utf-8
    #优先级的简单实例
    priorityNumber=2+1*4
    print priorityNumber      #输出结果:6
    
    #优先级使用实例
    #以下优先级排名从高到低,在同一运算中,先执行优先级高的再执行低的,以此类推。
    
    #Top 1:函数调用、寻址、下标
    
    #Top 2:幂运算**
    priorityNumber=2*2**3
    print priorityNumber      #输出结果:16
    
    #Top 3:翻转运算~
    
    #Top 4:正负号
    print 1+2*-3      #输出结果:-5
    
    #Top 5:*、/、%
    print 2+1*2/5      #输出结果:2
    
    #Top 6:+、-
    print 3<<2+1      #输出结果:24
    
    #Top 7:<<、>>
    
    #Top 8:按位&、^、|
    
    #Top 9:比较运算符
    priority=2*3+2<=2+1*7
    print priority      #输出结果:True
    
    #Top 10:逻辑的not and or
    
    #Top 11:lambda表达式
    #python优先级使用规律
    #1、一般情况下是左结合的
    #ps:在没有更高优先级运算符,即只有同级运算符时时从左到右结合
    print 1+2+3*5+5      #输出结果:23
    
    #2、出现赋值的时候一般是右结合
    #ps:在有赋值运算符时,是右结合,即先算出1+2的值以后再赋值给priority
    priority=1+2
    print priority       #输出结果:23
    
    
    #python运算符优先级大招
    '''比如说有这个需求:
            去商店买水,买3瓶水,每瓶5块,再买一个绿箭(假设绿箭3块),总共多少钱?
       这个简单的应用非常明显,需要先用乘法再用加法,如果这里你忘记了乘法和加法的优先级,可以这样:
    '''
    print (3*5)+3       #输出结果:18
    
    #ps: 这只是一个简单的例子,只是为了告诉大家实际应用中实在不行咱就放大招。有备无患。

     

  • 相关阅读:
    状态压缩DP 不断学习中。。。。。。
    程序员技术练级攻略(转)
    SQL Server 2008安装提示1608错误的解决方法
    Delphi字符串指针操作
    一个Python练习
    Android开发中的svn问题
    Python使用正则表达式替换源码前序号
    百度地图之Hello world !
    用Python写的一个简单的端口扫描程序
    android地图定位
  • 原文地址:https://www.cnblogs.com/zhaomeng/p/10303150.html
Copyright © 2020-2023  润新知