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

2.5 運算符和優先級

微視頻

Python語言支持的運算符包括算術運算符、比較運算符、賦值運算符、邏輯運算符、位運算符、成員運算符和身份運算符。

2.5.1 算術運算符

Python語言中常見的算術運算符如表2-1所示。

表2-1 算術運算符

【例2.5】計算部門的銷售業績差距和平均值(源代碼\ch02\2.5.py)。

這里首先定義兩個變量,用于存儲各部門的銷售額,然后使用減法計算銷售業績差距,最后應用加法和除法計算平均值。

    branch1=760000
    branch2=540000
    sub= branch1- branch2
    avg= (branch1+ branch2)/2
    savg=int(avg)
    print("部門1和部門2的銷售業績差距是:"+ str(sub))
    print("兩個部門銷售業績的平均值是:"+ str(savg))

保存并運行程序,結果如圖2-5所示。

圖2-5 例2.5的程序運行結果

2.5.2 比較運算符

Python語言支持的比較運算符如表2-2所示。

表2-2 比較運算符

【例2.6】使用比較運算符(源代碼\ch02\2.6.py)。

    branch1=760000                                                       #定義變量,存儲部門1的銷售額
    branch2=540000                                                       #定義變量,存儲部門2的銷售額
    print("部門1的銷售業績是:"+str(branch1)+",部門2的銷售業績是:"+str(branch2))
    print("部門1==部門2的結果是:"+str(branch1== branch1))               #等于操作
    print("部門1!=部門2的結果是:"+str(branch1!= branch1))               #不等于操作
    print("部門1>部門2的結果是:"+str(branch1>  branch1))                #大于操作
    print("部門1<部門2的結果是:"+str(branch1<  branch1))                #小于操作
    print("部門1<=部門2的結果是:"+str(branch1<=branch1))                #小于或等于操作

保存并運行程序,結果如圖2-6所示。

圖2-6 例2.6的程序運行結果

2.5.3 賦值運算符

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

表2-3 賦值運算符

【例2.7】使用賦值運算符(源代碼\ch02\2.7.py)。

    a = 36
    b = 69
    c = 60
    #簡單的賦值運算
    c = a + b
    print ("c 的值為:", c)
    #加法賦值運算
    c += a
    print ("c 的值為:", c)
    #乘法賦值運算
    c *= a
    print ("c 的值為:", c)
    #除法賦值運算
    c /= a
    print ("c 的值為:", c)
    #取模賦值運算
    c = 12
    c %= a
    print ("c 的值為:", c)
    #冪賦值運算
    a=3
    c **= a
    print ("c 的值為:", c)
    #取整除賦值運算
    c //= a
    print ("c 的值為:", c)

保存并運行程序,結果如圖2-7所示。

圖2-7 例2.7的程序運行結果

2.5.4 邏輯運算符

Python語言支持的邏輯運算符如表2-4所示。

表2-4 邏輯運算符

【例2.8】驗證軍隊的夜間口令和編號(源代碼\ch02\2.8.py)。

    print ("開始驗證軍隊的夜間口令")                #輸出提示消息
    password=input("請輸入今天夜間的口令:")        #使用input()函數接收輸入的信息
    num=input("請輸入軍隊的編號:")
    number=int(num)                                 #將輸入的信息轉換為整數類型
    if(password=="雞肋" and (number==1002 or number==1006)):
        print ("恭喜您,口令正確!")
    else:
        print ("對不起,口令錯誤!")

保存并運行程序,結果如圖2-8所示。

圖2-8 例2.8的程序運行結果

2.5.5 位運算符

在Python語言中,位運算符把數字看作二進制來進行計算。Python語言支持的位運算符如表2-5所示。

表2-5 位運算符

【例2.9】使用位運算符(源代碼\ch02\2.9.py)。

    a = 12             #12 =0000 1100
    b = 6              #6= 0000 0110
    c = 0
    #按位與運算
    c = a & b;         #4 = 0000 0100
    print ("c 的值為:", c)
    #按位或運算
    c = a | b;         #14 = 0000 1110
    print ("c 的值為:", c)
    #按位異或運算
    c = a ^ b;         #10 = 0000 1010
    print ("c 的值為:", c)
    #按位取反運算
    c = ~a;           #-13 = 1000 1101
    print ("c 的值為:", c)
    #左移動運算
    c = a << 2;        #48 = 0011 0000
    print ("c 的值為:", c)
    #右移動運算
    c = a >> 2;        #3 = 0000 0011
    print ("c 的值為:", c)

保存并運行程序,結果如圖2-9所示。

圖2-9 例2.9的程序運行結果

2.5.6 成員運算符

Python語言還支持成員運算符,其測試例中包含了一系列的成員,如字符串、列表、元組。成員運算符包括in和not in。例如,x in y表示:若x在y序列中,則返回True;x not in y表示:若x不在y序列中,則返回True。

【例2.10】使用成員運算符(源代碼\ch02\2.10.py)。

    a ='蘋果'
    b = '香蕉'
    fruit = ['蘋果', '荔枝', '橘子', '橙子', '柚子' ];
    #使用in 成員運算符
    if ( a in fruit ):
       print ("變量a 在給定的列表fruit 中")
    else:
       print ("變量a 不在給定的列表fruit 中")
    #使用not in 成員運算符
    if ( b not in fruit ):
       print ("變量b 不在給定的列表fruit 中")
    else:
       print ("變量b 在給定的列表fruit 中")
    #修改變量a 的值
    a = '哈密瓜'
    if ( a in fruit ):
       print ("變量a 在給定的列表fruit 中")
    else:
       print ("變量a 不在給定的列表fruit 中")

保存并運行程序,結果如圖2-10所示。

圖2-10 例2.10的程序運行結果

2.5.7 身份運算符

Python語言支持的身份運算符為is和not is。其中,is判斷兩個標識符是不是引用自一個對象;is not判斷兩個標識符是不是引用自不同對象。

【例2.11】使用身份運算符(源代碼\ch02\2.11.py)。

    a ='蘋果'
    b ='蘋果'
    #使用is 身份運算符
    if ( a is b):
       print ("a 和b 有相同的標識")
    else:
       print ("a 和b 沒有相同的標識")
    #使用not is 身份運算符
    if ( a not in b ):
       print ("a 和b 沒有相同的標識")
    else:
       print ("a 和b 有相同的標識")
    #修改變量a 的值
    a = '香蕉'
    if ( a is b):
       print ("修改后的a 和b 有相同的標識")
    else:
       print ("修改后的a 和b 沒有相同的標識")

保存并運行程序,結果如圖2-11所示。

圖2-11 例2.11的程序運行結果

2.5.8 運算符的優先級

下面是Python語言的運算符,以處理順序的先后排列。

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

(2)object。

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

“.”符號用來存取對象的屬性與方法。下面的案例調用對象t的append()方法,在對象t的結尾添加一個字符"t":

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

(4)+x、-x、~x。

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

(6)x * y、x/y、x % y:x乘以y、x除以y、x除以y的余數。

(7)x + y、x – y:x加y、x減y。

(8)x << y、x >> y:x左移y位、x右移y位。例如:

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

(9)x & y:位AND運算符。

(10)x ^ y:位XOR運算符。

(11)x | y:位OR運算符。

(12)<、<=、>、>=、==、!=、<>、is、is not、in、not in。

in與not in運算符應用于列表(list)。is運算符用于檢查兩個變量是否屬于相同的對象;is not運算符則用于檢查兩個變量是否不屬于相同的對象。

!=與<>運算符是相同功能的運算符,都用來測試兩個變量是否不相等。Python建議使用!=運算符,而不使用<>運算符。

(13)not。

(14)and。

(15)or、lambda args:expr。

使用運算符時需要注意以下事項:

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

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

    >>>7.0 % 4.0
    3.0

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

(4)如果運算符(operator)兩端的運算數(operand),其數據類型不相同,那么Python就會將其中一個運算數的數據類型轉換為與另一個運算數一樣的數據類型。轉換順序為:若有一個運算數是復數,則另一個運算數也會被轉換為復數;若有一個運算數是浮點數,則另一個運算數也會被轉換為浮點數。

(5)Python有一個特殊的運算符—lambda。利用lambda運算符能夠以表達式的方式創建一個匿名函數。lambda運算符的語法如下:

    lambda args : expression

args是以逗號(,)隔開的參數列表list,而expression則是對這些參數進行運算的表達式。

例如:

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

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

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

【例2.12】運算符的優先級(源代碼\ch02\2.12.py)。

    a = 5
    b = 8
    c = 4
    d = 2
    e = 0
    e = (a + b)   * c / d        #(13  *4 ) / 2
    print ("(a + b)    * c / d 運算結果為:",  e)
    e = ((a + b)   * c) / d      #(13     *4 ) /2
    print ("((a + b)    * c) / d 運算結果為:",  e)
    e = (a + b)   * (c / d);     #(13)* (4/2)
    print ("(a + b)    * (c / d)   運算結果為:",  e)
    e = a + (b * c) / d;         #5 + (32/2)
    print ("a + (b * c) / d 運算結果為:",  e)

保存并運行程序,結果如圖2-12所示。

圖2-12 例2.12的程序運行結果

主站蜘蛛池模板: 大竹县| 连山| 依安县| 绿春县| 砀山县| 肇源县| 乐陵市| 微山县| 上饶市| 法库县| 额济纳旗| 新野县| 永福县| 平湖市| 阿巴嘎旗| 霍州市| 连南| 象州县| 年辖:市辖区| 海伦市| 平罗县| 永定县| 阿克| 宁津县| 巨鹿县| 临潭县| 长泰县| 葵青区| 江山市| 亳州市| 沅江市| 车致| 朝阳区| 兴海县| 台山市| 城市| 蒲江县| 乐安县| 铜梁县| 镇巴县| 无为县|