1. 程式人生 > 實用技巧 >6.運算子補充和流程控制if判斷

6.運算子補充和流程控制if判斷

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
......