標籤:關係運算 結構 比較 tin 數學運算 語法錯誤 過程 比較子 組合
字串
逸出字元
- 用一個特殊的方法表示出一系列不方便寫出的內容,比如斷行符號鍵,換行鍵,退格鍵
- 藉助反斜線字元,一旦字串中出現反斜線,則反斜線後面一個火幾個字元表示已經不是原來的意思了,進行了轉義
- 在字串中,一旦出現反斜線就要加倍小心,可能由逸出字元出現
- 不同系統對換行操作有不同的表示
Linux: \r\n
字串的格式化
利用format函數
利用百分比符號格式化
- 在字串中,利用%表示一個特殊的含義,表示對字元進行格式化
- %d: 此處應該放入一個整數
- %s: 表示此處應該放入一個字串
In [12]:
s = "I love %s"
# 下面列印,直接把%s作為字串的一個內容列印出來
print(s)
I love %s
In [13]:
print("I love %s"%"wangxiaojing")
I love wangxiaojing
In [15]:
print( s%"wangxiaojing")
I love wangxiaojing
In [18]:
s = "I am %d years old"
# 留意下面兩句話的區別和結果
print(s)
print(s%18)
I am %d years oldI am 18 years old
In [22]:
s = "I am %s, i am %d years old"
print(s)
# 注意以下表達的出錯原因
# 如果字串中由預留位置,則由幾個預留位置必須用幾個實際內容代替,或者一個也不要
#print(s%"tulingxueyuan")
?
# 如果出現多個預留位置,則相應內容需要用括弧括起來
print(s%("tulingxueyuan", 18))
I am %s, i am %d years oldI am tulingxueyuan, i am 18 years old
format函數格式化字串
- 直接用format函數進行格式化
- 推薦使用這種方法
- 在使用上,以{}和:代替%號,後面用format帶參數完成
In [25]:
s = "I love {}".format("LiXiaojing")
print(s)
?
s = "Yes, i am {1} years old, I love {0} and i am {1} years old".format("Tulingxueyuan", 18)
print(s)
I love LiXiaojingYes, i am 18 years old, I love Tulingxueyuan and i am 18 years old
None
- 表示什麼都沒有
- 如果函數沒有傳回值,可以返回 None
- 用來佔位置
- 用來接觸變數綁定
運算式
- 由一個或者幾個數字或者變數和運算子組合成的一行代碼
- 通常會返回一個結果運算子
- 由一個以上的值經過變化得到新值的過程就叫運算
- 用於運算的符號叫運算子
- 運算子分類:
- 算數運算子
- 比較或者關係運算子
- 賦值運算子
- 邏輯運算子
- 位元運算
- 成員運算
- 身份運算子
算數運算子
- 進行算數運算的符號
- python沒有自增自減運算子
In [32]:
# +,-跟正常算術運算子一模一樣
a = 9+3-2
print(a)
# 乘號用星號(*)代替
a = 9 * 4
print(a)
# 除號用斜杠(/)代替
# 在Python2.x 和python3.x 中,除號(/)結果可能不一致,此處以3系列為準
a = 9/4
print(a)
?
?
# % 取餘運算
# 兩個數字相除應該有商數有餘數
# % 只會得到餘數
a = 9 % 4
print(a)
?
# // 表示取商運算,也叫地板除
a = 9 // 4
print(a)
?
# ** 表示冪運算
a = 9 ** 4
print(a)
?
a = 3 ** 3
print(a)
10362.2512656127
比較子
- 對兩個變數或者值進行比較的運算子
- 比較的結果是布爾值,即True/False
In [35]:
# == , 等號
a = 3 ** 4
# 下面語句執行書序是
# 1, 計算 a == 80
# 2. 把結果放入b中
b = a == 80
print(b)
?
?
# != 不等於
print( 9 != 8 )
?
# > 大於
# < 小於
# >= 大於等於
# <= 小於等於
FalseTrue
賦值運算子In [37]:
# = , 賦值
a = 0
c = a = 4
?
# +=, 是縮寫,
a = 0
a += 7 # a = a+ 7 的縮寫
print(a)
?
?
# 所有數學運算子都有縮寫形式
# -=, ×=, /=, //=, %=, **=,都是縮寫形式
7
邏輯運算子
- 對布爾值進行計算的符號
- and 邏輯與
- or 邏輯或
- not 邏輯非
- python中邏輯運算沒有異或運算
- 運算規則:
- and看做乘法, or看做加法,
- True看做1, False看做0
- 則邏輯運算就能轉換成整數數學運算
- 最後結果如果是0則為False, 否則為True
- 邏輯運算的短路問題
- 邏輯運算式,按照運算順序計算,一旦能夠確定整個式子未來的值,則不再進行計算,直接返回
In [40]:
# 邏輯運算子案例
a = True
b = False
c = True
?
# 以下式子等價於 d = 1 * 0 + 1
d = a and b or c
print(d)
?
?
d = a or b and a
print(d)
TrueTrue
In [43]:
# 邏輯運算的短路案例
?
# 下面的邏輯運算式,a的值一定是True,則運行到or的時候,整個運算式不在向下計算
a = True or xxxxxxxxxxx
?
# 下面運算式,如果xxx中包含賦值運算式,則結果很難預期
# 程式碼範例(虛擬碼)
b = 0
a = a or (b=9) and 6
# 假定上面運算式如果沒有語法錯誤
# 則b最終的值應該是0而不是9
print(b)
print(a)
File "<ipython-input-43-bb4253784911>", line 9 a = a or (b=9) and 6 ^SyntaxError: invalid syntax
成員運算子號
- 用來檢測某一個變數是否是另一個變數的成員
- in
- not in
In [47]:
# 案例
l = [1,2,3,4,5]
a = 7
?
b = a in l
print(b)
?
a = 4
print(a in l)
?
print(a not in l)
FalseTrueFalse
身份運算
- is: 用來檢測兩個變數是否是同一個變數
- is not: 兩個變數不是同一個變數
In [50]:
a = 9
b = 9
print( a is b)
?
a = "I love wangxiaojing"
b = "I love wangxiaojing"
print( a is b)
TrueFalse
運算子的優先順序問題
程式結構?
03-字串+變數