官术网_书友最值得收藏!

2.5 運(yùn)算符和優(yōu)先級

在Python語言中,支持的運(yùn)算符包括算術(shù)運(yùn)算符、比較運(yùn)算符、賦值運(yùn)算符、邏輯運(yùn)算符、位運(yùn)算符、身份運(yùn)算符和成員運(yùn)算符。

2.5.1 算術(shù)運(yùn)算符

Python語言中常見的算術(shù)運(yùn)算符如表2-1所示。

表2-1 算術(shù)運(yùn)算符

【案例2-1】使用算術(shù)運(yùn)算符(代碼2.1.py)。

        x = 4
        y = 5
        z = 1
        #加法運(yùn)算
        a = x + y
        print ("a的值為:", a)
        #減法運(yùn)算
        a =x - y
        print ("a的值為:", a)
        #乘法運(yùn)算
        a = x * y
        print ("a的值為:", a)
        #除法運(yùn)算
        a = x / y
        print ("a的值為:", a)
        #取模運(yùn)算
        a= x % y
        print ("a的值為:", a)
        #修改變量x、y、z
        x = 10
        y = 12
        z = x**y
        print ("z的值為:", z)
        #整除運(yùn)算
        X = 15
        y = 3
        z = x//y
        print ("z的值為:", z)

保存并運(yùn)行程序,結(jié)果如下:

        A的值為: 9
        a的值為: -1
        a的值為: 20
        a的值為: 0.8
        a的值為: 4
        z的值為: 1000000000000
        z的值為: 5

在本案例中,首先定義變量x、y、z并賦值,然后進(jìn)行算術(shù)運(yùn)算,接著修改變量的值,再次進(jìn)行整除運(yùn)算。

2.5.2 比較運(yùn)算符

Python語言支持的比較運(yùn)算符如表2-2所示。

表2-2 比較運(yùn)算符

【案例2-2】使用比較運(yùn)算符(代碼2.2.py)。

        x = 15
    y = 6
    # 判斷變量x和y是否相等
    if ( x == y ):
      print ("x等于y")
    else:
      print ("x不等于y")
    # 判斷變量x和y是否不相等
    if ( x ! = y ):
      print ("x不等于y")
    else:
      print ("x等于y")
    # 判斷變量x是否小于y
    if ( x < y ):
      print ("x小于y")
    else:
      print ("x大于等于y")
    # 判斷變量x是否大于y
    if ( x > y ):
      print (" x大于y")
    else:
      print (" x小于等于y")
    # 修改變量x和y的值
    x = 6
    y = 18
    # 判斷變量x是否小于等于y
    if ( x <= y ):
      print (" x小于等于y")
    else:
      print (" x大于  y")
    # 判斷變量x是否大于等于y
    if ( y >= x):
      print (" y大于等于x")
    else:
      print (" y小于x")

保存并運(yùn)行程序,結(jié)果如下:

        x不等于y
    x不等于y
    x大于等于y
    x大于y
    x小于等于y
    y大于等于y

在本案例中,首先定義變量x、y并賦值,然后使用if判斷語句,并結(jié)合比較運(yùn)算符判斷兩個變量的大小關(guān)系。

2.5.3 賦值運(yùn)算符

賦值運(yùn)算符表示將右邊變量的值賦給左邊變量,常見的賦值運(yùn)算符的含義如表2-3所示。

表2-3 賦值運(yùn)算符

案例2-3】使用賦值運(yùn)算符(代碼2.3.py)。

        x = 24
        y = 8
        z = 6
        #簡單的賦值運(yùn)算
        z = x + y
        print ("z的值為:", z)
        #加法賦值運(yùn)算
        z += x
        print ("z的值為:", z)
        #乘法賦值運(yùn)算
        z *= x
        print ("z的值為:", z)
        #除法賦值運(yùn)算
        z /= x
        print ("z的值為:", z)
        #取模賦值運(yùn)算
        z = 12
        z %= x
        print ("z的值為:", z)
        #冪賦值運(yùn)算
        x=3
        z **= x
        print ("z的值為:", z)
        #取整除賦值運(yùn)算
        z //= x
        print ("z的值為:", z)

保存并運(yùn)行程序,結(jié)果如下:

        z的值為:32
        z的值為:56
        z的值為:1344
        z的值為:56.0
        z的值為:12
        z的值為:1728
        z的值為:576

在本案例中,首先定義變量x、y和z并簡單賦值,然后使用各種賦值方式對變量進(jìn)行賦值操作。

2.5.4 邏輯運(yùn)算符

Python支持的邏輯運(yùn)算符如表2-4所示。

表2-4 邏輯運(yùn)算符

案例2-4】使用邏輯運(yùn)算符(代碼2.4.py)。

        a = 10
        b = 15
        #布爾“與”運(yùn)算
        if ( a and b ):
          print ("變量a和b都為true")
        else:
          print ("變量a和b有一個不為true")
        #布爾“或”運(yùn)算
        if ( a or b ):
          print ("變量a和b都為true,或其中一個變量為true")
        else:
          print ("變量a和b都不為true")
        # 修改變量a的值
        a = 0
        if ( a and b ):
          print ("變量a和b都為true")
        else:
          print ("變量a和b有一個不為true")
        if ( a or b ):
          print ("變量a和b都為true,或其中一個變量為true")
        else:
          print ("變量a和b都不為true")
        # 布爾“非”運(yùn)算
        if not( a and b ):
          print ("變量a和b都為false,或其中一個變量為false")
        else:
          print ("變量a和b都為true")

保存并運(yùn)行程序,結(jié)果如下:

        變量a和b都為true
        變量a和b都為true,或其中一個變量為true
        變量a和b有一個不為true
        變量a和b都為true,或其中一個變量為true
        變量a和b都為false,或其中一個變量為false

在本案例中,首先定義變量a和b并簡單賦值,然后對變量進(jìn)行各種邏輯運(yùn)算操作。

2.5.5 位運(yùn)算符

在Python中,按位運(yùn)算是把數(shù)字轉(zhuǎn)換為二進(jìn)制來進(jìn)行計算。Python支持的位運(yùn)算符如表2-5所示。

表2-5 位運(yùn)算符

【案例2-5】使用位運(yùn)算符(代碼2.5.py)。

        a = 12              # 12 =00001100
        b = 6               # 6= 00000110
        c = 0
        #按位與運(yùn)算
        c = a & b           # 4 = 00000100
        print ("c的值為:", c)
        #按位或運(yùn)算
        c = a | b           # 14 = 00001110
        print ("c的值為:", c)
        #按位異或運(yùn)算
        c = a ^ b           # 10 = 00001010
        print ("c的值為:", c)
        #按位取反運(yùn)算
        c = ~a             # -13 = 10001101
        print ("c的值為:", c)
        #左移動運(yùn)算
        c = a << 2          # 48 = 00110000
        print ("c的值為:", c)
        #右移動運(yùn)算
        c = a >> 2          # 3 = 00000011
        print ("c的值為:", c)

保存并運(yùn)行程序,結(jié)果如下:

        c的值為: 4
        c的值為: 14
        c的值為: 10
        c的值為: -13
        c的值為: 48
        c的值為: 3

在本案例中,首先定義變量a、b和c并簡單賦值,然后對變量進(jìn)行各種位運(yùn)算操作。讀者特別需要注意按位取反運(yùn)算的操作結(jié)果。

2.5.6 身份運(yùn)算符

Python支持的身份運(yùn)算符為is和not is。其中is是判斷兩個標(biāo)識符是不是引用自同一個對象;is not是判斷兩個標(biāo)識符是不是引用自不同對象。

案例2-6】使用身份運(yùn)算符(代碼2.7.py)。

        a =’張笑笑’
        b = ’劉萍’
        #使用is身份運(yùn)算符
        if ( a is b):
          print ("a和b有相同的標(biāo)識")
        else:
          print ("a和b沒有相同的標(biāo)識")
        #使用is not身份運(yùn)算符
        if ( a is not b ):
          print ("a和b沒有相同的標(biāo)識")
        else:
          print ("a和b有相同的標(biāo)識")
        # 修改變量a的值
        a = ’劉萍’
        if ( a is b):
          print ("修改后的a和b有相同的標(biāo)識")
        else:
          print ("修改后的a和b仍然沒有相同的標(biāo)識")

保存并運(yùn)行程序,結(jié)果如下:

        a和b沒有相同的標(biāo)識
        a和b沒有相同的標(biāo)識
        修改后的a和b有相同的標(biāo)識

在本案例中,首先定義變量a和b并簡單賦值,然后判斷a和b是否具有相同的標(biāo)識,接著修改變量a的值,修改后的a和b有相同的標(biāo)識。

2.5.7 成員運(yùn)算符

Python還支持成員運(yùn)算符,測試實例中包含了一系列成員,包括字符串、列表或元組。成員運(yùn)算符包括in和not in, x in y表示如果x在y序列中返回true; x not in y表示如果x不在y序列中返回true。

案例2-7】使用成員運(yùn)算符(代碼2.6.py)。

        a =’張笑笑’
        b = ’劉萍’
        students = [’王平’, ’張小平’, ’李曉莉’, ’張雁峰’, ’韓恩麗’ ];
        # 使用in成員運(yùn)算符
        if ( a in students ):
          print ("變量a在給定的列表students中")
        else:
          print ("變量a不在給定的列表students中")
        # 使用not in成員運(yùn)算符
        if ( b not in students ):
          print ("變量b不在給定的列表students中")
        else:
          print ("變量b在給定的列表students中")
        # 修改變量a的值
        a = ’張小平’
        if ( a in students ):
          print ("變量a在給定的列表students中")
        else:
          print ("變量a不在給定的列表students中")

保存并運(yùn)行程序,結(jié)果如下:

        變量a不在給定的列表students中
        變量b不在給定的列表students中
        變量a在給定的列表students中

在本案例中,首先定義變量a和b并簡單賦值,然后定義了一個列表變量students,接著開始判斷變量a和b是否屬于列表students的成員,修改變量a的值后,變量a屬于列表students的成員。

2.5.8 運(yùn)算符的優(yōu)先級

Python運(yùn)算符以處理的先后排列如下。

(1)(), [], {}。

(2)'object'。

(3)object[i], object[1:r], object.attribute, function()。

(4)(.)符號用來存取對象的屬性與方法。下列案例調(diào)用對象t的append()方法,在對象t的結(jié)尾加上一個字符"t":

        >>> t = ["P", "a", "r", "r", "o"]
        >>> t.append("t")
        >>> t
        ['P', 'a', 'r', 'r', 'o', 't']

(5)+x, -x, ~x。

(6)x**y:x的y次方。

(7)x * y, x / y, x % y:x乘y, x除以y, x除以y的余數(shù)。

(8)x + y, x - y:x加上y, x減y。

(9)x << y, x >> y:x左移y位,x右移y位。例如:

        >>> x = 4
        >>> x << 2
        16

(10)x & y:按位與運(yùn)算符。

(11)x ^ y:按位異或運(yùn)算符。

(12)x | y:按位或運(yùn)算符。

(13)<, <=, >, >=, ==, !=, <>, is, is not, in, not in。in與not in運(yùn)算符應(yīng)用在列表(list)上。is運(yùn)算符檢查兩個變量是否屬于相同的對象。is not運(yùn)算符則是檢查兩個變量是否不屬于相同的對象。! =與<>運(yùn)算符是相同功能的運(yùn)算符,都是測試兩個變量是否不相等。Python建議使用!=運(yùn)算符,而不要使用<>運(yùn)算符。

(14)not。

(15)and。

(16)or, lambda args:expression。

使用運(yùn)算符時須注意下列事項。

(1)將除法應(yīng)用在整數(shù)時,其結(jié)果會是一個浮點數(shù)。例如8/4會等于2.0,而不是2。余數(shù)運(yùn)算會將x / y所得的余數(shù)返回來,例如7%4 =3。

(2)如果將兩個浮點數(shù)相除取余數(shù),其返回值也會是一個浮點數(shù),其計算方式是x - int(x/ y)* y。例如:

        >>>7.0 % 4.0
        3.0

(3)比較運(yùn)算符可以連在一起處理,例如a<b<c<d, Python會將這個式子解釋成a<b and b<c and c<d。像x<y>z也是有效的表達(dá)式。

(4)如果運(yùn)算符(operator)兩端的運(yùn)算數(shù)(operand)數(shù)據(jù)類型不相同,Python會將其中一個運(yùn)算數(shù)的數(shù)據(jù)類型,轉(zhuǎn)換成跟另一個運(yùn)算數(shù)一樣的數(shù)據(jù)類型。轉(zhuǎn)換方式為:若有一個運(yùn)算數(shù)是復(fù)數(shù),另一個運(yùn)算數(shù)也會被轉(zhuǎn)換成復(fù)數(shù);若有一個運(yùn)算數(shù)是浮點數(shù),另一個運(yùn)算數(shù)也會被轉(zhuǎn)換成浮點數(shù)。

(5)Python有一個特殊的運(yùn)算符:lambda。利用lambda運(yùn)算符能夠以表達(dá)式的方式創(chuàng)建一個匿名函數(shù)。lambda運(yùn)算符的語法如下:

        lambda args : expression

args是以逗號(,)隔開的參數(shù)列表(list),而expression則是對這些參數(shù)進(jìn)行運(yùn)算的表達(dá)式。

例如:

        >>>a=lambda x, y:x + y
        >>>print (a(3,4))
        7

x與y是a()函數(shù)的參數(shù),a()函數(shù)的表達(dá)式是x+y。lambda運(yùn)算符后只允許有一個表達(dá)式。要達(dá)到相同的功能,也可以使用函數(shù)來定義a,如下所示:

        >>> def a(x, y):     #定義一個函數(shù)
         return x + y        #返回參數(shù)的和
        >>> print (a(3,4))
        7

案例2-8】比較運(yùn)算符的優(yōu)先級(代碼2.8.py)。

        a = 10
        b = 6
        c = 4
        d = 2
        e = 0
        e = (a + b) * c / d      #(16 *4 ) / 2
        print ("(a + b) * c / d運(yùn)算結(jié)果為:",  e)
        e = ((a + b) * c) / d    # (16 *4 ) /2
        print ("((a + b) * c) / d運(yùn)算結(jié)果為:",  e)
        e = (a + b) * (c / d);   # (16) * (4/2)
        print ("(a + b) * (c / d) 運(yùn)算結(jié)果為:",  e)
        e = a + (b * c) / d;     # 10 + (24/2)
        print ("a + (b * c) / d運(yùn)算結(jié)果為:",  e)

保存并運(yùn)行程序,結(jié)果如下:

        (a + b) * c / d運(yùn)算結(jié)果為:32.0
        ((a + b) * c) / d運(yùn)算結(jié)果為:32.0
        (a + b) * (c / d) 運(yùn)算結(jié)果為:32.0
        a + (b * c) / d運(yùn)算結(jié)果為:22.0

在本案例中,首先定義變量a、b、c、d、e并簡單賦值,然后通過各種類型的運(yùn)算符混合計算,用戶可以分辨出這些運(yùn)算符的優(yōu)先級。

主站蜘蛛池模板: 浦东新区| 伊宁县| 怀集县| 福州市| 新干县| 福建省| 离岛区| 晋宁县| 茶陵县| 永康市| 井冈山市| 阜南县| 武宣县| 遵义县| 武安市| 洮南市| 颍上县| 东阳市| 卓资县| 得荣县| 南开区| 辽宁省| 九江县| 泸州市| 额济纳旗| 廊坊市| 简阳市| 常州市| 聊城市| 安新县| 定安县| 丹东市| 铜川市| 白山市| 土默特左旗| 保德县| 福清市| 云龙县| 和林格尔县| 琼结县| 信丰县|