02-python基礎知識-運算子與分支機構
阿新 • • 發佈:2018-12-27
運算子與分支結構
運算子
-
賦值運算子
- 用’='表示,左邊只能是變數。
-
算術運算子
- +、-、*:加、減、乘
- /:除法,結果是浮點數
- //:除法,結果是整數
- %:求餘
- **:求冪,也可以使用函式pow
-
複合運算子
- +=、-=、*=、…
- 示例:
a += b
等價於a = a + b
-
關係運算符
>、>=、<、<=、==、!=
- 表示式:由運算子和運算元構成的式子
- 關係表示式:由關係運算符和運算元構成的式子
- 關係表示式式有值的:符合數學邏輯值為真(True),不符合數學邏輯值為假(False)
-
邏輯運算子
- 說明:邏輯運算就是用來合併或取反表示式的
- 運算:與、或、非
- 與(and):兩邊的表示式同時為真,結果才為真
a = 200 # 其他語法也通用的寫法 print(a > 10 and a < 100) # python中特有的形式 print(10 < a < 100) print(a%3 == 0 and a%5 == 0)
- 或(or):兩邊的表示式一個為真,結果就為真
y = int(input('請輸入一個年份:')) print((y%4==0 and y%100!=0) or (y%400==0))
- 非(not):用於取反表示式,真變假,假變真
- 使用not是為了簡化表示式的書寫
- 經常伴隨著隱式型別轉換
-
成員運算子
- in、not in:判斷一個值是否在另一個裡面
- 說明:經常用在字串、列表、元組、集合、字典等成員的判斷
- 示例:
lt = [1, 2, 3] print(8 not in lt) dt = {'name'
-
位運算子(瞭解)
- &:按位與,對應的資料位同時為1,結果上對應的位才為1
- |:按位或,對應的資料位一個為1,結果上對應的為就為1
- ^:按位異或,對應的資料位相同是結果為0,不同時結果為1
- ~:按位取反,資料的每一位0變1,1變0
- <<:按位左移,左移一位相當於乘以2
>>
:按位右移,右移一位相當於除2
-
運算子的優先順序與結合性
- 語法中沒有明確規定優先順序與結合性,即使是明確說明了你也記不住
- 建議:使用時不用刻意記錄優先順序與結合性,當需要明確指定時新增括號即可
流程控制
-
說明:
- 按照程式碼的執行流程,程式可以分為三種結構:順序結構、分支結構、迴圈結構
- 順序結構:程式碼按照從上到下的順序依次執行的結構,沒有語法要求
- 程式碼層次:python中的程式碼層次不是通過大括號表示的,而是通過縮排體現的
-
分支結構(if-elif-else)
- 格式1:適合於解決生活中的條件執行問題
if 表示式: 語句塊
執行流程:當程式執行到if語句時,首先會判斷表示式的真假。若表示式的值為真,則執行後面縮排的語句塊;若表示式的值為假,則跳過語句塊,執行後面的內容。
- 格式2:適合於解決生活中的非此即彼的問題
if 表示式: 語句塊1 else: 語句塊2
執行流程:當程式執行到if-else語句時,首先會判斷表示式的真假。若表示式的值為真,則執行語句塊1;若表示式的值為假,則執行語句塊2.
- 格式3:適合於解決生活中的多種選擇問題
if 表示式1: 語句塊1 elif 表示式2: 語句塊2 ... else: 語句塊n
- elif的個數沒有限制
- else可以省略不寫
- 所有的互斥選擇語句塊最多隻能執行一個
相關型別操作
-
字串切片
s1 = "hello" s2 = "world" # 兩個字串拼接 s3 = s1 + s2 print(s3) # *可以重複字串次數 s4 = "abc" * 3 print(s4) # len函式統計字元長度 print(len(s1)) s = "abcdefg" # 從頭開始進行提取,下標從0開始 print(s[0]) # 蔥末未進行提取,下標從-1開始 print(s[-1]) # 切片 # 格式:s[開始:結束:步進],左包含,右不包含 print(s[1:3]) # 指定步進值,預設為1 print(s[::2]) # 逆序提取 print(s[::-1]) # 字串格式化 # %s:字串 # %d:整型 # %f:浮點 # %c:字元 name = "二狗" like = "大花" age = 18 # print("俺叫%s,暗戀%s,她今年%d歲" % (name, like, age)) print("俺叫"+name, "暗戀"+like, "她今年"+str(age)) # python中特有的解決方案 # print("俺叫{},暗戀{},她今年{}歲".format(name, like, age)) # print("俺叫{2},暗戀{1},她今年{0}歲".format(name, like, age)) # print("俺叫{l},暗戀{n},她今年{a}歲".format(n=name, l=like, a=age))
-
列表操作
lt = [1, 2, 3, 4, 5] print(lt[0]) print(lt[-1]) print(len(lt)) # 修改元素 lt[0] = 100 # 元素追加 lt.append(200) # lt.append([300, 400]) # 將可迭代物件的元素新增到列表中 lt.extend([300, 400]) # 插入元素 lt.insert(2, 250) # 刪除元素 # 根據索引號刪除 del lt[0] # 根據值進行刪除,只會刪除第一個 lt.remove(250) # 返回並刪除指定下標元素,預設是最後一個 ele = lt.pop(2) # print(ele) # print(lt) lt = [1, 2, 3, 4, 5, 3] # 查詢元祖在列表中的索引號 # 找到就會返回其索引號,第一個出現的位置 # 若不在列表中會報錯 print(lt.index(3)) # 統計元素在列表中出現的次數 print(lt.count(3)) # 逆序 lt.reverse() # 排序 # reverse = True lt.sort(reverse=True) print(lt)
-
元組操作
# tp1 = (1, 2, 3) # tp1 = (1,) tp1 = 1, 2, 3 tp2 = (4, 5, 6) # 可以直接拼接在一起 # tp3 = tp1 + tp2 # print(tp3, type(tp3)) # 重複指定次數 tp4 = tp1 * 3 print(tp4) # 統計元素個數 print(len(tp4)) tp = (1, 2, 3, 4, 5, 6) # 切片操作 print(tp[0], tp[-1]) print(tp[1:-1]) # 獲取指定元素的索引 print(tp.index(3)) # 統計元素出現的次數 print(tp.count(3)) # 最大值 print(max(tp)) # 最小值 print(min(tp))
-
集合操作
s = {'彥炯', '露露', '彥博', '啟明', '呂威', '二狗'} # 新增元素 s.add('繼光') # 刪除元素 # s.remove('二狗') # 刪除不存在元素會報KeyError錯 # s.remove('狗蛋') # 刪除元素,元素存在則刪除,不存在也不報錯 s.discard('狗蛋') # 返回並刪除,元素是隨機的 # print(s.pop()) # 清空元素 s.clear() # print(s) s1 = {'小馬', '小喬', '小周'} s2 = {'小王', '小杜', '小馬', '小喬', '小周'} # 並集 # print(s1.union(s2)) # 交集 # print(s1.intersection(s2)) # 求交集,並用交集覆蓋原來的集合 # s1.intersection_update(s2) # 差集 # print(s1.difference(s2)) # 求差集,並用差集覆蓋原來的集合 # s1.difference_update(s2) # print(s1) # 判斷是否沒有交集 print(s1.isdisjoint(s2)) # 判斷是否是另一集合的子集 print(s1.issubset(s2)) # 判斷是否是另一集合的父集/超集 print(s2.issuperset(s1))
-
字典操作
d = {'name': 'xiaoming', 'age': 20} # 獲取元素 # 有就返回對應的值,沒有就報KeyError錯 print(d['name']) # 有就返回對應的值,沒有就返回None,可以指定預設值 print(d.get('namexxx', '預設值')) # 修改元素 # 鍵存在則修改對應的值 d['name'] = '二狗' # 鍵不存在則新增鍵值對 d['height'] = 180 # 更新:存在的鍵會覆蓋,不存在的鍵會新增 d.update({'name': 'dahua', 'weight': 50}) # 刪除元素 # del d['weight'] # 返回並刪除 print(d.pop('weight')) # 清空元素 d.clear() print(d)