zoukankan      html  css  js  c++  java
  • Python教程(2.3)——运算符和类型转换

    Python里有很多运算符(operator),这节就让我们来详细学一学。

    注意:本文没有特别说明的地方,只考虑bool、int、float三种类型。例如“两边操作数类型相同时,得到的结果为操作数类型”这句话只需要考虑上述三种类型就可以了。

    算术运算符

     

    加运算符(plus,+)

    +运算符将两个数相加。例如1+2等于3,1.23+4.56等于5.79。

    +运算符用于一个数前时等于它本身。例如+(-2)等于-2,+2等于2。

    减运算符(minus,-)

    -运算符将两个数相减。例如4-1等于3,1.23-4.56等于-3.33。

    -运算符也可以计算一个数的相反数。例如-(-7)等于7。

    乘运算符(multiply ... by ...,*)

    *运算符将两个数相乘。例如12*7等于84,4.5*0.9等于4.05。

    除运算符(divided by,/)

    /运算符将两个数相除。例如16/4等于4.0,4/3等于1.33333...。注意/得到的一定是float类型。如果除数为0,会产生ZeroDivisionError。

    地板除运算符(floor division,//)

    //运算符将两个数相除,得到答案的整数部分。例如4//3等于1,4.0//3.0等于1.0。如果除数为0,会产生ZeroDivisionError。

    取余运算符(modulo,%)

    %运算符求两个数相除的余数,也叫。例如4%3等于1,4.0%3.0等于1.0。如果除数为0,会产生ZeroDivisionError。

    乘方运算符(power,**)

    **运算符用来计算乘方。a ** b得到a的b次方。例如,2 ** 7等于128,4 ** -2等于0.0625。

    在除了/以外的运算符中,两边操作数类型相同时,得到的结果为操作数类型;对于/运算符,得到的结果一定为float类型。

    比较运算符

    大于运算符(greater than,>)

    大于运算符用来判断一个数是否大于另一个数。结果为bool,如果大于返回True,否则返回False。例如1>0为True,1>2为False。

    小于运算符(lesser than,<)

    小于运算符用来判断一个数是否小于另一个数。结果为bool,如果小于返回True,否则返回False。例如0<1为True,1<0为False。

    等于运算符(equal to,==)

    等于运算符用来判断一个数是否等于另一个数。结果为bool,如果等于返回True,否则返回False。例如1+1==2为True,1+1==3为False。

    注意区分==和=,后者是赋值号。a = b表示将b赋给a,a == b表示a与b是否相等。请勿混淆。

    不等于运算符(not equal to,!=)

    不等于运算符用来判断一个数是否不等于另一个数。结果为bool,如果不等于返回True,否则返回False。例如1+1!=3为True,1+1!=2为False。

    大于等于运算符(greater than or equal to,>=)

    大于等于运算符用来判断一个数是否大于或等于另一个数。结果为bool,如果大于或等于返回True,否则返回False。例如1>=1为True,0>=1为False。

    小于等于运算符(lesser than or equal to,<=)

    小于等于运算符用来判断一个数是否小于或等于另一个数。结果为bool,如果小于或等于返回True,否则返回False。例如1<=1为True,1<=0为False。

    逻辑运算符

    and运算符

    and运算符(一般)用于两个布尔值之间,如果两边都为True,则返回True,否则返回False。例如True and True、1 > 0 and 1 > -1为True,True and False、False and False、1 == 0 and 1 > 0为False。

    and也可以用于其它类型,以后会有更深入的介绍。

    or运算符

    or运算符(一般)用于两个布尔值之间,如果两边有任意一个为True,则返回True,否则返回False。例如1 > 0 or 1 > 1、True or True、True or False为True,1 == 2 or 1 == 3为False。

    or也可以用于其它类型,以后会有更深入的介绍。

    not运算符

    not运算符(一般)用于一个布尔值之前,如果该值为True,则返回False,否则返回True。例如not True等于False,not 1 == 0为True。

    not也可以用于其它类型,以后会有更深入的介绍。

    赋值运算符

    =运算符

    =运算符将右边的值赋给左边的变量。例如:

    >>> a = 0
    >>> a
    0
    >>> a = 10
    >>> a
    10
    >>> a = True
    >>> a
    True

    +=运算符

    +=运算符将左边的变量加上右边的值。a += b是a = a + b的缩略形式。

    -=运算符

    -=运算符将左边的变量减去右边的值。a -= b是a = a - b的缩略形式。

    *=运算符

    *=运算符将左边的变量乘以右边的值。a *= b是a = a * b的缩略形式。

    /=运算符

    /=运算符将左边的变量除以右边的值。a /= b是a = a / b的缩略形式。

    //=运算符

    //=运算符将左边的变量地板除右边的值。a //= b是a = a // b的缩略形式。

    %=运算符

    %=运算符将左边的变量模右边的值。a %= b是a = a % b的缩略形式。

    **=运算符

    **=运算符计算左边变量的右边次方(听起来很奇怪)并赋给左边变量。a **= b是a = a ** b的缩略形式。

    类型转换

    转换规则

    bool->int

    True为1,False为0。

    bool->float

    True为1.0,False为0.0。

    int->bool

    不为0转换为True,为0转换为False。

    int->float

    值不变,但是类型改变。例如1变成1.0,4变成4.0。

    float->bool

    不为0.0转换为True,为0.0转换为False。

    float->int

    向0取整。如果值为整数(例如1.0、2.0),不变;如果值为整数,取小于该数的最大整数;如果值为小数,取大于该数的最小整数。整数例如1.5->1,-1.5->-1。

    其实还有更多的转换规则,更多的以后再讨论。

    隐式类型转换(implicit type cast)

    当一个有两个操作数的运算符两边操作数类型不同时,就会出现隐式类型转换。限于目前读者的Python水平,只讲关于+、-、*、/、//、%、**这7个运算符的类型转换。

    在Python中,类型的级别是不同的,从低到高依次是bool、int、float(这不代表没有其它类型,还记得吗,文章前面说只考虑这三种类型)。

    两边都是bool的情况

    将两边的操作数都转成int类型。对于除/以外的运算符,结果为int类型。对于/运算符,结果为float类型。

    其它情况

    将拥有低级类型的操作数转换成高级类型。对于除/以外的运算符,结果为高级类型。对于/运算符,结果为float类型。

    例如:

    >>> True + False
    1
    >>> True - 2
    -1
    >>> 1.5 - True
    0.5
    >>> 1.2 * 7
    8.4
    >>> 1.7 - 4
    -2.3

    显式类型转换(explicit type cast)

    上面说的是隐式类型转换,Python也允许显式类型转换。显式类型转换指用户明确指出要进行类型转换。

    显式类型转换的格式为type(value),type为目标类型,value为要转换的值。例如int(2.5)表示将2.5转换成int类型,即2;float(2)表示将2转换成float类型,即2.0。

    注意,对于变量,使用显式类型转换并不会改变其类型:

    >>> a = 10.5
    >>> int(a)
    10
    >>> a
    10.5

    虽然中间输出了a转换成int之后的值,但这只是个零时的值,不会改变a的类型。只有赋值才可以改变:

    >>> a = int(a)
    >>> a
    10

    注意

    有个地方要注意:在类型转换中,只会暂时转换变量的值的类型,不会改变变量类型!只有修改变量值才会出现类型上的变化。例如:

    >>> a = 10
    >>> a + 10.0        # a is still int!
    20.0
    >>> a += 10.0      # a is float!
    >>> a
    20.0

    ToDo

    以后会补充优先级概念。如果不在cnblogs上发现本文,请访问http://www.cnblogs.com/collectionne/p/6853051.html查看完整文章(也可能还没补充)。

    小结

    1. Python的算术运算符有+、-、*、/、//、%、**。

    2. Python的比较运算符有==、>、<、>=、<=。

    3. Python的逻辑运算符有and、or、not。

    4. Python的赋值运算符有+=、-=、*=、/=、//=、%=、**=。

    5. 接受两个操作数的运算符的操作数类型不一致时,会有隐式类型转换。

    6. 显式类型转换格式:type(value)。

  • 相关阅读:
    数字电路与系统-公式规则知识点
    数字电路与系统-门电路基本知识1
    数字电路与系统-数制与编码2
    数字电路与系统-数制与编码1
    数字电路与系统-知识点2
    数字电路与系统-知识点1
    数字电路与系统-编码器
    数字电路与系统-组合逻辑电路的竞争冒险现象3
    数字电路与系统-组合逻辑电路的竞争冒险现象2
    前端工程师提高工作效率的几个小技巧
  • 原文地址:https://www.cnblogs.com/collectionne/p/6853051.html
Copyright © 2011-2022 走看看