豬行天下之Python基礎——2.3 變數,常量,運算子

coder-pig發表於2019-04-03

內容簡述:

  • 1、變數
  • 2、常量
  • 3、運算子

1、變數


① 什麼是變數

程式執行過程中值可以改變的資料,代表這一個儲存空間,需要用變數名來找到這個資料。舉個形象化的例子:超市儲物箱,存東西到箱子裡後會給你一個紙條,根據紙條才能取回裡面的東西。儲物櫃的格子可以理解為變數的記憶體空間,紙條就是變數名,拿和放就是修改變數名對應記憶體空間裡的資料。


② 變數的使用示例

變數「使用前需先定義」,python是一種「動態型別語言」,賦值時可以繫結不同型別的資料值。同時也確定了變數型別。Python中可以通過type()函式來獲取變數的資料型別,示例如下:

# 變數定義(確定初始值型別)
a = 1
print('%s => %d' % (type(a),a))
# 變數賦值
a = 'Python'
print('%s => %s' % (type(a),a))


# 執行結果如下:
# <class 'int'> => 1
# <class 'str'> => Python
複製程式碼

③ 多個變數賦值

Python支援多個變數賦值,以下兩種賦值方法都是正確的:

a = b = c = 1
a, b, c = 1,2,"Python"
複製程式碼

④ del關鍵字

我們可以使用del關鍵字刪除物件的引用,但刪除後再呼叫變數是會報錯的,比如呼叫del a,然後再去把a列印出來,會報這樣的錯誤:NameError: name 'a' is not defined


2、常量


Python中沒有專門定義常量的方式,通常使用大寫變數名錶示,不過僅僅是起一種「提示效果」,本質上還是變數

3、運算子


① 算術運算子(7種) & 賦值運算子(8種)

Python中包含的算術運算子有如下七種:

+(加) -(減)*(乘) /(除) %(求餘) *(冪,次方) //(地板除法,捨棄小數)

使用程式碼示例如下

print("3 + 7 = %d" % (3 + 7))
print("3 - 7 = %d" % (3 - 7))
print("3 * 7 = %d" % (3 * 7)) 
print("7 / 3 = %f" % (7 / 3))
print("7 %% 3 = %d" % (7 % 3))
print("3 ** 6 = %d" % (7 ** 3))
print("3 // 6 = %f" % (7 // 3)) 
複製程式碼

執行結果如下

3 + 7 = 10
3 - 7 = -4
3 * 7 = 21
7 / 3 = 2.333333
7 % 3 = 1
3 ** 6 = 343
3 // 6 = 2.000000
複製程式碼

而賦值運算子就是在算術運算子後新增一個=(等號),比如:a+=1 等價於: a = a + 1
8種賦值運算子:= += -= *= /= %= *= //=


② 比較運算子(6種)

Python中提供如下六種比較運算子:

==(等於) !=(不等於) >(大於) <(小於) >=(大於等於) <=(小於等於)

比較結果會返回一個布林值,TrueFalse,一般在條件判斷那裡會用到。


③ 位運算子(6種)

位運算子是把數字看做二進位制來計算,首先你要了解禁止轉行,我們平時說的數字都是十進位制,十進位制如何轉換成二進位制?一直求餘法,舉個例子,十進位制的6轉換為二進位制:

6 % 2 = 0  得出第一位為0
6 / 2 = 3 
3 % 2 = 1 得出第二位為1
3 / 2 = 1
1 % 2  = 1 得出第三位為1
# 所以十進位制的6轉成二進位制的值就是:110

# 再試試十進位制的17轉二進位制:
17 % 2 = 1 得出第1位為1
17 / 2 = 8
8 % 2 = 0 得出第2位為0
8 / 2 = 4 
4 % 2 = 0  得出第3位為0
4 / 2 =  2
2 % 2 = 0 得出第4位為0
2 / 2 = 1
1 % 2 = 1 得出第5位為1
複製程式碼

所以十進位制的17轉二進位制的值就是:10001,知道十進位制怎麼轉二進位制了,那麼二進位制怎麼轉十進位制呢?用到權值相加法,比如二進位制的110轉十進位制:

1*2^2+1*2^1+0*2^0=4+2=6
複製程式碼

再試試10001轉十進位制:

1*2^4+0*2^3+0*2^2+0*2^1+1*2^0=16+1=17
複製程式碼

Python中提供了bin函式,可以獲得一個整形數字的二進位制表示,下面通過示例程式來了解Python中的6種位運算子:

a = 6
b = 17
print('a 對應的二進位制值 %s' % bin(a))
print('b 對應的二進位制值 %s' % bin(b))

# & 按位與,兩個相應位都為1則為1,否則為0
print('a & b = %s 對應十進位制的值為: %d' % (bin(a & b), a & b))

# | 按位或,兩個相應位有一個為1,則為1,兩個都不為0,才為0
print('a | b = %s 對應十進位制的值為: %d' % (bin(a | b), a | b))

# ^ 異或,兩個相應位不同為1,相同為0
print('a ^ b = %s 對應十進位制的值為: %d' % (bin(a ^ b), a ^ b))

# ~ 按位取反,二進位制位取反,0變1,1變0
print('~a = %s 對應十進位制的值為:%a' % (bin(~a), ~a))

# << 左移運算子,所有位向左移一定位數,高位丟棄,低位補0
print('a << 2 = %s 對應十進位制的值為:%a' % (bin(a << 2), a << 2))

# >
> 右移運算子,所有位向右移一定位數

print('a >> 2 = %s 對應十進位制的值為:%a' % (bin(a >> 2), a >> 2))
複製程式碼

輸出結果如下

a 對應的二進位制值 0b110
b 對應的二進位制值 0b10001
a & b = 0b0 對應十進位制的值為: 0
a | b = 0b10111 對應十進位制的值為: 23
a ^ b = 0b10111 對應十進位制的值為: 23
~a = -0b111 對應十進位制的值為:-7
a << 2 = 0b11000 對應十進位制的值為:24
a >> 2 = 0b1 對應十進位制的值為:1
複製程式碼

④ 邏輯運算子(3種)

Python中提供了三種邏輯運算子,分別是:and(邏輯與),or(邏輯或),not(邏輯非),一般在條件判斷的時候會用到,程式碼示例如下:

score = 70

# 邏輯與,兩個表示式都成立,才執行
if score > 60 and score < 100:
    print('分數及格')

# 邏輯與,有一個表示式成立就執行
score = -10
if score < 0 or score > 100:
    print("分數值非法,不能小於0或者大於100")

# 邏輯非,逆轉,表示式成立的話反而不執行
score = 100
if not score == 100:
    print("沒有滿分")
else:
    print("滿分")
複製程式碼

輸出結果如下

分數及格
分數值非法,不能小於0或者大於100
滿分
複製程式碼

⑤ 成員運算子(2種)

Python提供了成員運算子,用於「判斷指定的序列中是否有某個特定的值」,innot in
比如判斷列表中是否有某個特定的值的程式碼示例如下:

people_list = ['小明''小紅''小白''小豬']

if '小豬' in people_list:
    print("小豬在列表裡")

if '大豬' not in people_list:
    print("大豬不在列表裡")
複製程式碼

輸出結果如下

小豬在列表裡
大豬不在列表裡
複製程式碼

⑥ 身份運算子(2種)

Python中提供了身份運算子用於「判斷兩個識別符號是不是引用自一個物件」,isis not,使用示例如下:

# 普通資料型別
a = 1
b = 1
print('當前a和b引用同一個變數:%s' % (a is b))

# 複雜資料型別(陣列)
a = [1]
b = [1]
print('當前a和b引用不同一個變數:%s' % (a is not b))

# 字串
a = 'python'
b = 'python'
print('當前a和b引用同一個變數:%s' % (a is b))
複製程式碼

輸出結果如下

當前a和b引用同一個變數:True
當前a和b引用不同一個變數:True
當前a和b引用同一個變數:True
複製程式碼

⑦ 運算子優先順序

Python中的運算子優先級如表所示:

運算子 描述
** 指數
~ + - 取反,正負號
* / % // 乘除,求餘,地板除法
<< >> 左右移
& 按位與
^ 異或,按位或
> < <= > >= 比較運算子
<> == != 等於運算子
= %= /= //= -= += *= **= 賦值運算子
is is not 身份運算子
in not in 成員運算子
not or and 邏輯運算子

如果本文對你有所幫助,歡迎
留言,點贊,轉發
素質三連,謝謝?~


相關文章