1. 程式人生 > 其它 >學習Python第1天

學習Python第1天

技術標籤:python

Task 01:Python基礎入門:從變數到異常處理(第1天)

學習內容:變數、運算子與資料型別和位運算

變數、運算子與資料型別

  1. 註釋
    在 Python 中,# 表示註釋,作用於整行;
    ‘’’ ‘’’ 或者 “”" “”" 表示區間註釋,在三引號之間的所有內容被註釋。
  2. 運算子
    算術運算子
    在這裡插入圖片描述
    比較運算子

操作符	名稱	示例
>	    大於	2 > 1
>=	  大於等於	2 >= 4
<	    小於	1 < 2
<=	  小於等於	5 <= 2
==	    等於	3 == 4
!=	   不等於	3
!= 5

邏輯運算子

操作符	名稱	示例
and	     	   (3 > 2) and (3 < 5)
or	     	   (1 > 3) or (9 < 2)
not      非 	not (2 > 1)

位運算子

操作符	名稱	 示例
~   	按位取反  ~4
&	    按位與	 4 & 5
`	`	按位或
^	    按位異或  4 ^ 5
<<	    左移	 4 << 2
>>	    右移	 4 >> 2

三元運算子
【例子】
在這裡插入圖片描述
有了這個三元操作符的條件表示式,你可以使用一條語句來完成以上的條件判斷和賦值操作。

在這裡插入圖片描述
其他運算子
在這裡插入圖片描述
注意:
is, is not 對比的是兩個變數的記憶體地址;
==, != 對比的是兩個變數的值;
比較的兩個變數,指向的都是地址不可變的型別(str等),那麼is,is not 和 ==,!= 是完全等價的;
對比的兩個變數,指向的是地址可變的型別(list,dict,tuple等),則兩者是有區別的。

 運算子的優先順序
 ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201219102234217.png)
  1. 變數和賦值
    在使用變數之前,需要對其先賦值。
    變數名可以包括字母、數字、下劃線、但變數名不能以數字開頭。
    Python 變數名是大小寫敏感的,foo != Foo。

  2. 資料型別與轉換
    在這裡插入圖片描述
    注:
    type() 不會認為子類是一種父類型別,不考慮繼承關係。
    isinstance() 會認為子類是一種父類型別,考慮繼承關係。
    如果要判斷兩個型別是否相同推薦使用 isinstance()。

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

  3. print() 函式
    將物件以字串表示的方式格式化輸出到流檔案物件file裡。其中所有非關鍵字引數都按str()方式進行轉換為字串輸出;
    關鍵字引數sep是實現分隔符,比如多個引數輸出時想要輸出中間的分隔字元;
    關鍵字引數end是輸出結束時的字元,預設是換行符\n;
    關鍵字引數file是定義流輸出的檔案,可以是標準的系統輸出sys.stdout,也可以重定義為別的檔案;
    關鍵字引數flush是立即把內容輸出到流檔案,不作快取。

位運算

  1. 原碼、反碼和補碼
    二進位制有三種不同的表示形式:原碼、反碼和補碼,計算機內部使用補碼來表示。
    原碼:就是其二進位制表示(注意,有一位符號位)。
    反碼:正數的反碼就是原碼,負數的反碼是符號位不變,其餘位取反(對應正數按位取反)。
    補碼:正數的補碼就是原碼,負數的補碼是反碼+1。
    符號位:最高位為符號位,0表示正數,1表示負數。在位運算中符號位也參與運算。
  2. 按位運算
    按位非操作 ~
    ~ 把num的補碼中的 0 和 1 全部取反(0 變為 1,1 變為 0)有符號整數的符號位在 ~ 運算中同樣會取反。
    按位與操作 &
    只有兩個對應位都為 1 時才為 1,有0則為0.
    按位或操作 |
    只要兩個對應位中有一個 1 時就為 1,全為0則取0.
    按位異或操作 ^
    只有兩個對應位不同時才為 1,相同則取0.
    異或操作的性質:滿足交換律和結合律
    按位左移操作 <<
    num << i 將num的二進位制表示向左移動i位所得的值。
    按位右移操作 >>
    num >> i 將num的二進位制表示向右移動i位所得的值。
  3. 利用位運算實現快速計算
    通過 <<,>> 快速計算2的倍數問題。
n << 1 -> 計算 n*2
n >> 1 -> 計算 n/2,負奇數的運算不可用
n << m -> 計算 n*(2^m),即乘以 2 的 m 次方
n >> m -> 計算 n/(2^m),即除以 2 的 m 次方
1 << n -> 2^n

通過 ^ 快速交換兩個整數。 通過 ^ 快速交換兩個整數。
在這裡插入圖片描述
通過 a & (-a) 快速獲取a的最後為 1 位置的整數。
在這裡插入圖片描述
4. 利用位運算實現整數集合
一個數的二進位制表示可以看作是一個集合(0 表示不在集合中,1 表示在集合中)。
元素與集合的操作:
在這裡插入圖片描述
集合之間的操作:
在這裡插入圖片描述
注意
整數在記憶體中是以補碼的形式存在的,輸出自然也是按照補碼輸出。