6.運算子補充和流程控制if判斷
阿新 • • 發佈:2020-10-28
1.可變不可變型別
- 可變型別:值改變,id不變,證明改的是原值,證明原值是可以改變的
- 不可變型別:值改變,id也變了,證明是產生了新的值,壓根沒有改變原值,證明原值是不可以被修改的
1.1驗證
- int是不可變型別
x = 10
print(id(x))
x = 11
print(id(x))
- float是不可變型別
x = 3.1
print(id(x))
x = 3.2
print(id(x))
- str是不可變型別
x = 'aaa'
print(id(x))
x = 'bbb'
print(id(x))
小結:int、float、str都被設計成了不可分割的整體,不能夠改變
- list是可變型別
l = ['aaa','bbb','ccc']
print(id(l))
l[0] = 'AAA'
print(id(l))
- dict是可變型別
dic = {'k1':111,'k2':222}
print(id(dic))
dic['k1']=333
priny(id(dic))
- bool不可變
2.條件
-
第一大類:顯示布林值
①條件可以是:比較運算子
age = 18
print(age > 16) # 條件判斷後會得到一個布林值
②條件可以是:True、False
-
第二大類:隱式布林值,所有值都可以當成條件去用
其中0、None、空(空字串、空列表、空字典)=》代表的布林值為False,其餘都為真
3.邏輯運算子
3.1not、and、or的基本使用
-
not:就是把緊跟氣候的那個條件結果取反
not與緊跟其後的那個條件是一個不可分割的整體
print(not 16 > 13)
print(not True)
print(not False)
print(not 10)
print(not 0)
print(not None)
print(not '')
-
and:邏輯與,and用來連線左右兩個條件,兩個條件同時為True才為真
條件1 and 條件2
print(True and 10 > 3) print(True and 10 > 3 and 10 and 0) # 條件全為真,最終結果才為True
- or:邏輯或,or用來連線左右兩個條件,兩個條件但凡有一個為True,最終結果就為True,兩個條件都為False的情況下,最終結果才為False
3.2not、and、or的優先順序
優先順序:not>and>or
如果單獨就只是一串and連線或者說單獨就是一串or連線,按照從左到右順序依次運算即可(偷懶原則)
如果是混用,就需要考慮優先順序了
4.成員運算子與身份運算子
- in
print('egon' in 'hello egon') # 判斷一個字串是否存在於一個大字串中
print('e' in 'hello egon') # 判斷一個字串是否存在於一個大字串中
print(111 in [111,222,333]) # 判斷元素是否存在於列表中
print('k1' in {'k1':111,'k2':222}) # 判斷key是否在於字典中
- not in
print('egon' not in 'hello egon') # 推薦使用
print(not 'egon' in 'hello egon') # 邏輯同上,但語義不明確,不推薦
- is 身份運算子
is:判斷id是否相等
5.流程控制之if判斷
- 語法1:
if 條件:
程式碼1
程式碼2
程式碼3
- 語法2
if 條件:
程式碼1
程式碼2
程式碼3
else:
程式碼1
程式碼2
程式碼3
- 語法3
if 條件:
程式碼1
程式碼2
程式碼3
elif:
程式碼1
程式碼2
程式碼3
elif:
程式碼1
程式碼2
程式碼3
elif:
程式碼1
程式碼2
程式碼3
......