第三章 運算子與表示式
數字物件的運算
“//”代表整除,對int和float都適用,“/”代表正常的除法,有餘數 對於複數,區域和擷取除法是無效的
>>> 3//2
1
>>> 3/2
1.5
>>> 1.5//0.3
5.0
>>> 1.5/0.3
5.0
>>> 1.5//0.4
3.0
>>> 1.5/0.4
3.75
優先順序: 一元運算子 》 乘方 》乘法 》 除法 》加減法
Python的運算子絕大多數都是從左邊開始的,只有兩個特例,乘方(**)和條件表示式運算子是從右邊開始的
>>> 5 or (8 if 5>6 else 0) 5 >>> 5 or 8 if 5>6 else 3 3 // 條件表示式運算子的優先順序比邏輯運算子低
關係運算
不允許對複數進行比較
當運算元數同一型別時,比較才有效,如果不相同,會進行強制的進位制轉換。
邏輯運算
not a:如果a是false,返回1.否則返回0
a and b: 如果a是false,返回a,否則返回b。
a or b: 如果a是false,反饋b,否則反饋a。
總結,邏輯運算就是講第一個使得該命題最有可能的條件返回出來,同時,邏輯運算的結合性是從左到右的,對於and運算子,只有and左邊的值是false的時候,才繼續計算右邊的數。同理,對於 or 運算子,只有or左邊的數是false的時候,才繼續計算右邊的值。
運算子
左移,右移,按位與(&),按位或(|),按位異或(^)(相同的時候返回0,不同的時候返回1)
~(按位求反)
1.3
>>> 1 if 3 else 4
1
>>> 1 if 0 else 4
4
>>>
運算方式。先計算中間的條件,如果中間的是true,那麼計算左邊的,否則計算右邊的。
條件表示式的結合性
>>> 1 if 3>2 else 2 if 5>6 else 3
1
>>> (1 if 3>2 else 2) if 5>6 else 3
3
從右邊開始,到左邊結束。
常用函式
input函式
>>> x= input('x= ') x= 34 >>> x '34' >>> x=float(input('x=')) x=34 >>> >>> x 34.0
print函式
>>> print(1,2,3,sep='%%%',end='\n')// 按照什麼分隔開,換行符。
1%%%2%%%3
eval函式
實現從字串向數字的轉換
具體格式 eval(字串,【字典【,對映】】)
str函式
將數字物件,列表物件,元祖,集合轉換為字串,還可以進行運算。
>>> str(1+2)
'3'
>>> str([1,2,3])
'[1, 2, 3]'
>>> str((1,2,3))
'(1, 2, 3)'
range函式(左閉右開)
>>> x=range(10)
>>> x[2]
2
>>> x[1]
1
>>> x[0]
0
>>> x[10]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: range object index out of range
enumerate函式
是一個可迭代物件,s返回的是一個迭代器。
數學函式庫的函式應用
匯入方法:import <庫名> 或者 from<庫名> import <函式名>
>>> import math
>>> math.sqrt(3)
1.7320508075688772
ceil函式(往上取整)
>>> import math
>>> math.ceil(1.2)
2
>>> math.ceil(-1.2)
-1
trunc函式(往下取整)
>>> math.trunc(1.2)
1
factorial函式
當x是整數的時候,返回x的階乘,否則返回錯誤資訊
>>> math.factorial(19)
121645100408832000
>>> math.factorial(1,2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: factorial() takes exactly one argument (2 given)
isinf函式,判斷是不是超過最大值,如果是,返回true,否則返回false。正常的值的話,-1.7e308~1.7e308。
isnan函式
當x不是數字的時候,返回true,否則返回false(這裡的數字指的是在資料範圍裡面的數,如果超過了這個範圍,就不認為是數字了,返回true)。(兩個nan之間無法比較)
常用的字串方法
find函式
>>> s="abcd"
>>> s.find("bc")
1
>>> s.find("bc",2,3)
-1
>>> s.find("bc",1,3)
1
>>> s.find("bc",1,2)
-1
lower函式和islower函式
>>> s="ABCS_12"
>>> s.lower()
'abcs_12'
>>> s.islower()
False
>>> s="avc"
>>> s.islower()
True
split函式
以原字串s中的分隔符作為拆分依據,拆分字串s,返回一個列表,當不指定分隔符的時候,說明原字串中的分隔符是空格。
>>> s="ab,cd,1234,xy"
>>> s.split(sep=',')
['ab', 'cd', '1234', 'xy']
>>> s="ab cd 123 xy"
>>> s.split()
['ab', 'cd', '123', 'xy']
>>>
strip函式
刪除字串兩邊的空格或者指定的字元
>>> s=" %%123%% "
>>> s.strip()
'%%123%%'
>>> s.strip('%')
' %%123%% '
>>> s
' %%123%% '
>>> s.strip('%')
' %%123%% '
>>> s1=s.strip()
>>> s1
'%%123%%'
>>> s1.strip('%')
'123'
>>> s='%%123%%'
>>> s
'%%123%%'
>>> s.strip('%')
'123'
>>>
fromhex函式,用十六禁止建立一個位元組串物件,可以容忍十六禁止數串中的空格。
hex函式,將位元組串轉換為16進位制的數。
decode函式,講位元組串轉換為字串。如果不特指編碼引數,就是“UTF-8 ”編碼。