一、基本概念

1、Python語言支持的運(yùn)算符類型

  算數(shù)運(yùn)算符、比較運(yùn)算符、賦值運(yùn)算符、邏輯運(yùn)算符、位運(yùn)算符、成員運(yùn)算符、身份運(yùn)算符、運(yùn)算符優(yōu)先級(jí)

2、計(jì)算順序  

  運(yùn)算符優(yōu)先級(jí)表決定了哪個(gè)運(yùn)算符在別的運(yùn)算符之前計(jì)算,若是要改變計(jì)算的順序,使用圓括號(hào)。

3、結(jié)合規(guī)律

  運(yùn)算符通常由左向右結(jié)合,即相同優(yōu)先級(jí)的運(yùn)算符按照從左向右的順序計(jì)算。

In [2]: 3*4-2+6/2Out[2]: 13In [3]: 3*4-(2+6)/2Out[3]: 8

 

二、運(yùn)算符優(yōu)先級(jí)表

運(yùn)算符描述
lambdalambda表達(dá)式
or布爾“或”
and布爾“與”
not x布爾“非”
in,not in成員測(cè)試
is,is not同一性測(cè)試
<,<=,>,>=,!=,==比較
|按位或
^按位異或
&按位與
>>,<<移位
+,-加法與減法
*,/,%乘法、除法、取余
+x,-x正負(fù)號(hào)
~x按位翻轉(zhuǎn)
**指數(shù)
x.attribute屬性參考
x[index]下標(biāo)
x[index:index]尋址段
f(arguments...)函數(shù)調(diào)用
(expression,...)綁定或元組顯示
[expression,...]列表顯示
{key:datum,...}字典顯示
'expression,...'字符串轉(zhuǎn)換

 

三、運(yùn)算符相關(guān)函數(shù)

1、內(nèi)建函數(shù)

cmp():比較兩個(gè)數(shù)的大小

type():返回?cái)?shù)字對(duì)象的類型

str():將數(shù)字轉(zhuǎn)換為字符串

int():將變量的值的類型轉(zhuǎn)換為整型的

iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動(dòng)開發(fā)培訓(xùn)

In [4]: cmp(5,6)
Out[4]: -1In [5]: cmp(6,6)
Out[5]: 0

In [6]: cmp(9,6)
Out[6]: 1

iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動(dòng)開發(fā)培訓(xùn)

解析:cmp()是將圓括號(hào)里的第一個(gè)數(shù)和第二數(shù)進(jìn)行比較,<(輸出-1)、=(輸出0)、>(輸出1)

iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動(dòng)開發(fā)培訓(xùn)

In [8]: str(123)
Out[8]: '123'In [9]: str(0xFF)
Out[9]: '255'In [10]: type(123666666666666666666666666)
Out[10]: long

In [12]: a=456In [13]: type(a)
Out[13]: int

In [14]: str(a)
Out[14]: '456'

iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動(dòng)開發(fā)培訓(xùn)

2、數(shù)值工廠函數(shù)

int():返回一個(gè)字符串或者數(shù)值對(duì)象的整型表示

long():返回一個(gè)字符串或者數(shù)值對(duì)象的長整型表示

float():返回一個(gè)字符串或者數(shù)值對(duì)象的浮點(diǎn)型表示

bool():返回對(duì)象的布爾值

iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動(dòng)開發(fā)培訓(xùn)

In [17]: int(3.1415926)
Out[17]: 3In [18]: long(56)
Out[18]: 56LIn [19]: float(8)
Out[19]: 8.0In [20]: bool(0)
Out[20]: False

In [21]: bool(1)
Out[21]: True

In [22]: bool(123)
Out[22]: True

iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動(dòng)開發(fā)培訓(xùn)

3、功能函數(shù)

abs():返回給定參數(shù)的絕對(duì)值

coerce():返回一個(gè)包含類型轉(zhuǎn)換完畢的兩個(gè)數(shù)值元素的元組

divmod():將除法和取余運(yùn)算結(jié)合起來,返回一個(gè)包含商和余數(shù)的元組

pow():可以進(jìn)行指數(shù)運(yùn)算

round():用于對(duì)浮點(diǎn)型進(jìn)行四舍五入運(yùn)算

iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動(dòng)開發(fā)培訓(xùn)

In [24]: abs(-123)    #|-123|=123Out[24]: 123In [25]: coerce(12,23)
Out[25]: (12, 23)

In [26]: divmod(10,3)    #10除以3等于3余1Out[26]: (3, 1)

In [27]: pow(2,3)    #2^3=8Out[27]: 8In [28]: round(3.1415926)
Out[28]: 3.0In [29]: round(5.678)
Out[29]: 6.0

iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動(dòng)開發(fā)培訓(xùn)

4、數(shù)字進(jìn)制轉(zhuǎn)換函數(shù)

hex():將數(shù)字轉(zhuǎn)換成十六進(jìn)制數(shù)并以字符串形式返回

oct():將數(shù)字轉(zhuǎn)換成八進(jìn)制數(shù)并以字符串形式返回

bin():將數(shù)字轉(zhuǎn)換成二進(jìn)制數(shù)并以字符串形式返回

iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動(dòng)開發(fā)培訓(xùn)

In [30]: hex(123)
Out[30]: '0x7b'In [31]: oct(9)
Out[31]: '011'In [32]: bin(9)
Out[32]: '0b1001'

iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動(dòng)開發(fā)培訓(xùn)

注意:

  1、Python中進(jìn)制顯示

    二進(jìn)制binary--0b

    八進(jìn)制octal--0

    十進(jìn)制decimal

    十六進(jìn)制hex--0x

  2、在shell中 0開頭的數(shù)認(rèn)為是八進(jìn)制的數(shù)

iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動(dòng)開發(fā)培訓(xùn)

[root@localhost ~]# echo $((08*2))-bash: 08: value too great for base (error token is "08")
[root@studying ~]# echo $((07*2))14[root@localhost ~]# echo $((09*2))-bash: 09: value too great for base (error token is "09")

iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動(dòng)開發(fā)培訓(xùn)

解析:在shell中0開頭的數(shù)被解釋為八進(jìn)制的數(shù)值(八進(jìn)制數(shù)個(gè)位最大是7)

[root@localhost ~]# echo $((9*2))18[root@localhost ~]# echo $((10#09*2))18

解決辦法:在數(shù)值的前面注釋10#表示該數(shù)為十進(jìn)制數(shù)

 

四、腳本實(shí)例之運(yùn)算符

腳本練習(xí)1:分?jǐn)?shù)成績的判斷

iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動(dòng)開發(fā)培訓(xùn)

#!/usr/bin/pythonu_grade=raw_input("please input your grade:")if u_grade.isdigit():    if 90<=int(u_grade)<=100:        print "your grade is",u_grade,"A"
    elif 80<=int(u_grade)<=89:        print "your grade is",u_grade,"B"
    elif 70<=int(u_grade)<=79:        print "your grade is",u_grade,"C"
    elif 60<=int(u_grade)<=69:        print "your grade is",u_grade,"D"
    elif 0<=int(u_grade)<=59:        print "your grade is",u_grade,"E"
    else:        print "please input the range of number 0-100"else:    print "It's not a valid number,try again"

iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動(dòng)開發(fā)培訓(xùn)

腳本練習(xí)2:用戶信息的按條件獲取

iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動(dòng)開發(fā)培訓(xùn)

#!/usr/bin/pythonimport os

f=os.popen('cat /etc/passwd')for i in f:
    u_list=i.split(":")    if 500<int (u_list[2])<2000:        print "%s uid is %s "%(u_list[0],u_list[2])

iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動(dòng)開發(fā)培訓(xùn)

腳本練習(xí)3:加、減、乘、除、取余運(yùn)算

iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動(dòng)開發(fā)培訓(xùn)

#!/usr/bin/python#coding=utf-8num1=raw_input("please input the first number:x=")
num2=raw_input("請(qǐng)輸入第二個(gè)數(shù)字:y=")#優(yōu)化方向:進(jìn)行數(shù)值的大小判斷,合理運(yùn)算if num1.isdigit() and num2.isdigit():    print "x*y=",int(num1)*int(num2)    print "x+y=",int(num1)+int(num2)    print "x-y=",int(num1)-int(num2)    print "x/y=",int(num1)/int(num2)    print "x%y=",int(num1)%int(num2)else:    print "please input two number"

iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動(dòng)開發(fā)培訓(xùn)

 

五、注意事項(xiàng)

1、加法問題

  對(duì)于兩對(duì)象的相加,則相加項(xiàng)的格式必須相同否則報(bào)錯(cuò),相加:數(shù)值相加、元素增加……

iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動(dòng)開發(fā)培訓(xùn)

In [20]: a=[1,2,3]
In [21]: b=["zhang","jia","cai"]
In [22]: a+b  #加法方式的內(nèi)容追加,前后相加的格式必須相同Out[22]: [1, 2, 3, 'zhang', 'jia', 'cai']

In [23]: c=123In [24]: d="123"In [25]: c+d---------------------------------------------------------------------------TypeError Traceback (most recent call last)<ipython-input-25-99d6dddc327d> in <module>()----> 1 c+d
TypeError: unsupported operand type(s) for +: 'int' and 'str'

iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動(dòng)開發(fā)培訓(xùn)

2、乘法問題

  對(duì)于乘法中的*,如果數(shù)字相乘則為其本意=數(shù)與數(shù)的乘積運(yùn)算,如果字符串*一個(gè)數(shù)字則表示字符串的重復(fù)顯示,如下:

iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動(dòng)開發(fā)培訓(xùn)

In [27]: a=123In [28]: a*3Out[28]: 369In [29]: b="123"In [30]: b*3Out[30]: '123123123'

iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動(dòng)開發(fā)培訓(xùn)

 

@author:http://www.cnblogs.com/geaozhang/

http://www.cnblogs.com/geaozhang/p/7120238.html