1. 程式人生 > 其它 >位運算子取反_Python 基礎入門之從變數到異常值處理(變數、運算子、資料型別以及位運算)...

位運算子取反_Python 基礎入門之從變數到異常值處理(變數、運算子、資料型別以及位運算)...

技術標籤:位運算子取反

5b7a11ddc00e84c9215e1f9f91384a16.png

一、變數

Python變數由三個部分組成,分別是變數名、賦值符號以及變數值。

#變數的組成
name = "Hello China"

變數的命名方式

  • 變數名可以包括字母、數字、下劃線,但不能以數字作為開頭。
  • 駝峰體命名,首字母大寫。
  • 變數的命名區分大小寫。
  • 在使用變數前,先對其賦值。

變數的特性:

  • id。變數值的記憶體空間地址,使用id()來檢視變數的記憶體地址
  • type。使用type()來檢視變數的資料型別
  • 變數值=儲存值

二、變數的資料型別及轉換

資料型別:

  • str : 表示是一個字串型別
  • int :表示是一個整型
  • bool:表示是一個布林型,真:True 假:False
  • float:表示是一個小數型別,浮點數型別

通過type()函式來檢視變數的資料型別。

拓展:

  1. 檢視變數的長度,使用bit_length()函式。

b353e4939dfde35e8f8725b8b5184580.png

2. 可以用decimal包裡的Decimal物件和getcontext()方法來保留浮點小數後n位。用getcontext().prec來調整精度。

例:使 1/3 保留 4 位

799655ed3039843321b158acfd05357e.png

3. 布林 (boolean) 型變數只能取兩個值,TrueFalse。當把布林型變數用在數字運算中,用10代表TrueFalse

aff31ede223d8dc365c1630eb2407c30.png

4. 除了直接給變數賦值 TrueFalse,還可以用 bool(X) 建立變數, X 可以是:

  • 基本型別:整型、浮點型、布林型
  • 容器型別:字串、元組、列表、字典和集合

例:bool 作用在基本型別變數:X 只要不是整型 0、浮點型 0.0bool(X) 就是 True,否則為 False

2974ddfc3dc7f7b3e82ace6429f96860.png

bool作用在容器型別變數:X只要不是空的變數,bool(X)就是True,否則False。 對於容器變數,裡面沒元素則為空。

5. 判斷兩個型別是否相同推薦使用isinstance(),它被認為子類是一種父類型別,考慮繼承關係。

6d490221dd4532366102addd7d04532a.png

資料型別的轉換:

  • 轉換為整型 int(x, base=10)
  • 轉換為字串 str(object='')
  • 轉換為浮點型 float(x)

3608e43838145fb57a9b0882f0d38cec.png

三、運算子

  • 算數運算子
  1. 加法:+
  2. 減法:-
  3. 乘法: *
  4. 除法: /
  5. 整除://,(地板除,只取結果的整數部分,並且是向下取整,若結果為3.2取3,若結果為-3.2則取-4)
  6. 取餘:%
  7. 冪次:**

9fcdd4b5ee10c2a83a29cdbbd3685c52.png
  • 比較運算子
  1. 等於 ==
  2. 不等於 != 或 <>(a != b 或 a <> b)
  3. 大於 >
  4. 小於 <
  5. 大於等於 >=
  6. 小於等於 <=

01725fd373d4bd00250b677df76a6d50.png
  • 邏輯運算子
  1. 與 and :兩者都為True,則返回True,否則為False。
  2. 或or :兩者至少有一者為True,則返回True。
  3. 非 not : 如果 x 為 True,返回 False 。如果 x 為 False,它返回 True。

997e602530776737d11096fd16768ff4.png
  • 位運算子(位運算過程中,把數字轉化成二進位制計算,然後再轉化成數字。)
  1. 按位與 & :運算的兩個值相應位都為1,則該位的結果為1,否則為0。
  2. 按位或 | :運算的兩個值相應位只要有一個位置為1,則該位的結果為1。
  3. 按位異或 ^ :運算的兩個值相應位數值不同,則結果為1,否則為0。
  4. 按位取反 ~ :運算資料的每個二進位制位取反,即把1變為0,把0變為1 。
  5. 左移位 << :若 a <<2 將數字a對應的二進位制數集體向左移動2位,後面空餘位補零。
  6. 右移位 >> :若 a >> 3 將數字a對應的二進位制數集體向右移動2位,前面空餘位補零。
  • 其它運算子
  1. 存在 in :若 x 在 y 中,則返回True,否則返回False。
  2. 不存在 not in :若 x 不在 y 中,則返回True,否則返回False。
  3. 是 is : id(x) == id(y) , 如果引用的是同一個物件則返回 True,否則返回 False。
  4. 不是 is not : id(a) != id(b)。如果引用的不是同一個物件則返回結果 True,否則返回 False。

注意:

  • is, is not 對比的是兩個變數的記憶體地址
  • ==, != 對比的是兩個變數的值
  • 比較的兩個變數,指向的都是地址不可變的型別(str等),那麼is,is not 和 ==,!= 是完全等價的。
  • 對比的兩個變數,指向的是地址可變的型別(list,dict,tuple等),則兩者是有區別的。

例:比較的兩個變數均指向不可變型別。

383b19eb9b02057ada3e0c978ab14661.png

例:比較的兩個變數均指向可變型別。

6b46e8a858f9a1616d86cb1f48ee61f6.png

四、位運算

1. 原碼、反碼和補碼

二進位制有三種不同的表示形式:原碼、反碼和補碼。

原碼:就是其二進位制表示(注意,有一位符號位)。

00 00 00 11 —  3
10 00 00 11 — -3

反碼:正數的反碼就是原碼,負數的反碼是符號位不變,其餘位取反(對應正數按位取反)。

00 00 00 11 —  3
11 11 11 00 — -3

補碼:正數的補碼就是原碼,負數的補碼是反碼+1。

00 00 00 11 —  3
11 11 11 01 — -3

符號位:最高位為符號位,0表示正數,1表示負數。在位運算中符號位也參與運算。

2. 位運算規則

  • 位與運算子運算規則:0&0=0&1=1&0=0,1&1=1

cf543beb71ed46059a36fb4e8e7ac473.png
  • 位或運算子運算規則:0|1=1|0=1|1=1,0|0=0

08385bb6136257b31ac0753b75d84ea2.png
  • 位求反運算子運算規則:~0=1,~1=0

9d599ba0fcf9a237ee7ae92bd188b10f.png
  • 位異或運算子運算規則:0^0=1^1=0,0^1=1^0=1

33325a8079d2ae732d929ac033f5edf7.png
  • 左移位運算子運算規則:原來的所有位左移,最低位補0,相當於乘以2
  • 右移位運算子運算規則:原來的所有位右移,最低位丟棄,最高位使用符號位填充,相當於整除2