这真的就是我们小学学过的运算符

作者: 周且南_laygin | 来源:发表于2017-02-24 20:21 被阅读181次

    “上课”

    “起立”

    “老师好!”

    “同学们好,请坐,请翻到12页,今天我们来讲讲运算符。。。”

    恩恩,一看到这个题目就忍不住触景生情了一把,下面我们来过一下python3中的运算符。

    一、算术运算符

    算术运算符最简单的就是加减乘除求摸,但我今天不会将所有运算符都一一列举,只看几个比较特殊的运算符。

      python3中的除法比较特殊,下面以一个例子来进行说明一下。

    In [1]:

    a = 20

    b = 1.5

    c = 5

    a / b,a // b,a / c,round(a/b,4)

    Out[1]:

    (13.333333333333334, 13.0, 4, 13.3333)

    "/"是简单的除法,而"//"则是取整,但并不会四舍五入,如果需要指定小数位数,可使用round()函数,该函数会进行四舍五入。

    "**" 两颗星是幂运算符,例如:

    In [2]:

    2**5

    Out[2]:

    32

    二、关系运算符

    关系运算符无非大于(>)小于(<)等于(==)及延伸出来的大于等于(>=)小于等于(<=)不等(!=)

    In [3]:

    a = 12

    b = 7

    c = 7

    a > b,a < b,a == b,b <= c,b >= c,b != c

    Out[3]:

    (True, False, False, True, True, False)

    三、赋值运算符

        最常见和常用的就是 "=",还有一些不常见的赋值运算符,即根据算术运算符和"="组合延伸出来的,如:+=,-=,*=,/=,//=,%=,**=,下面 一 一 来看一下。

    >>> a = 12

    >>> b = 3

    >>> b += a

    >>> b

    15

    >>> b  -=  a  #这个减号‘-’有点诡异

    >>> b

    3

    >>> b *= a

    >>> b

    36

    >>> b **= 2

    >>> b

    1296

    >>> b /= 36

    >>> b

    36.0

    >>> b //= 7

    >>> b

    5.0

    >>> b %= 3

    >>> b

    2.0

    四、逻辑 / 位运算符

    python里的逻辑运算符其实就是and(且) 、or(或)、 not(非),如果将and表示成“&&”就不好了,没有这种表示方法,逻辑运算符比较简单,其余两个也是,只有这种表示方法。

    >>> a = 'a'

    >>> b = 'b'

    >>> a == 'a' and b=='c'   #相当于 True and False

    False

    >>> a == 'a' or b=='c'  #相当于True or False

    True

    >>> not (a == 'a')  #相当于 not True

    False

    >>> not (b == 'a')   #相当于 not False

    True

    python中有&,|,~,^等位运算符,表示位与、位或、位取反、位异或,此外还有<<(左移)和>>(右移)。

    >>> i = 30                           #下面的位运算都基于这两个数

    >>> j = 10

    >>> format(i,'b')                   #这是i = 30 的二进制表示

    '11110'

    >>> format(j,'b')                   #这是j = 10 的二进制表示

    '1010'

    >>> i & j        #从最右边的位开始计算,遵循1 & 1=1,1 & 0 =0,0 & 0 =0 的计算规则;j左边不够补0

    10

    >>> i | j       #遵循 1 |1=1,1 | 0 =1,0 | 0 =0,从右往左计算

    30

    >>> i ^ j    #遵循 1^1=0,1 ^0 =1,0 ^ 0 =0;即同为0,异为1

    20

    >>> format(20,'b')     #从异或结果的二进制就可以看得出来

    '10100'

    >>> i << 1        #左移一位相当于乘以2

    60

    >>> i << 2     #左移两位相当于乘以4,即2的2次方

    120

    >>> i       #但 i 还是原来的值

    30

    >>>  i >> 1    #相应的,右移一位相当于除以2,但不尽然。

    15

    >>>  i >> 2    #像这种情况,不是2的倍数,似乎看不懂,看二进制位就明白了

    7

    >>>  i >> 3

    3

    >>> format(7,'b')    #这是7的二进制

    '111'

    >>> format(3,'b')    #这是3的二进制

    '11'

    >>> format(15,'b')    #这是15的二进制,这下就很好明白啦。

    '1111'

    五、成员 / 身份运算符

    所谓成员运算符,其实就是一种表达式而已,嗯,我是这么理解的。在可迭代对象中都可以使用in 或者 not in 来判断某一变量或对象(毕竟python中一切皆对象)是否存在其中。下面以一个字符串来说明一下。

    >>> str = 'I love python'

    >>> 'I' in str

    True

    >>> 'love' in str

    True

    >>> 'you' in str      #充分说明,I love 'python' more than 'you',hahah.

    False

    >>> 'python' not in str

    False

    那什么叫做身份运算符呢?

    python中用 is (也叫做同一性运算符)来判断某两对象的标识符(可以理解为变量)是否指向同一对象(可理解为内存单元,不是类型)。

    >>> a = 10

    >>> b = 90

    >>> c = 10        #a,b,c都是整型变量,其中a与c的值相等

    >>> a is b

    False

    >>> a is not b

    True

    >>> a is c     

    True

    >>> id(a)

    1428095760

    >>> id(c)

    1428095760

    >>> id(a) == id(c)    #这里a和c的id相同

    True

    >>> id(b)

    1428098320

    >>> id(a) == id(b)  

    False

    需要特别说明一下,可能这里有误解,以为只要两个变量的值相等就有相同的身份标识,即id,其实不是的,如:

    >>> a = [1,2,3]

    >>> b = [1,2,3]

    >>> a is b

    False

    >>> a == b    #两变量的值是相等的

    True

    >>> id(a)     

    39732552

    >>> id(b)     #所以a和b的id不一样,即使值相等。所以is是否为True是以身份标识即id来判断的

    49467080

        以上简单介绍了python中三种(值,身份唯一性标识,类型)对象间判断的两种方式,即值判断使用比较运算符,身份判断使用is/not is,下面简单介绍下类型的判断方法(使用isinstance()

    >>> a = 'a'

    >>> isinstance(a,int)

    False

    >>> isinstance(a,(float,int))       #类型还可以是一个元组

    False

    >>> isinstance(a,(float,int,type('c')))     #类型元组中有str类型,所以为True

    True

    相关文章

      网友评论

      • 5d35e4b5f6b8://代表的是商取整,为什么会得到13.0而不是13呢?
        周且南_laygin:因为b是小数。如果b不是小数,那就是取整。如:
        >>> a
        20
        >>> c
        7
        >>> a//c
        2
        >>>

      本文标题:这真的就是我们小学学过的运算符

      本文链接:https://www.haomeiwen.com/subject/huxpwttx.html