03-python基礎知識-迴圈結構
阿新 • • 發佈:2018-12-27
迴圈結構
迴圈結構(while)
-
格式:
while 表示式: 語句塊
執行流程:當程式執行到while語句時,首先判斷表示式的真假。若表示式的值為真,則執行縮排的語句塊,之後返回表示式繼續判斷;若表示式的值為假,則跳過縮排的語句塊執行。
-
說明:
- 表示式:也叫迴圈條件
- 語句塊:也叫迴圈體
- 死迴圈:迴圈條件一直成立
- break:跳出迴圈
- continue:結束本次迴圈,進入下次迴圈
- else:對應的語句塊,迴圈正常退出時會執行,非正常退出(break)時不執行
迴圈結構(for-in)
-
說明:也是一種迴圈結構,經常用於便利可迭代物件,如:字串、列表、元組、字典等
-
格式:
for x in y: 語句塊
執行流程:x一次代表y種的一個元素,遍歷結束迴圈也就結束了。
列表生成式
-
range:
# 一個物件,儲存了產生連續整數的演算法,可以節約空間 # 可以指定起始位置,預設為0 # print(range(10)) # 可以進行遍歷 for i in range(10): print(i) # 可以轉換為列表 print(list(range
-
列表生成式
# 列表生成式:可以快速方便地生成列表 print([i for i in range(1, 11)]) print([i for i in 'abcdefg']) print([i*2 for i in range(1, 11)]) print([i*i for i in range(1, 11)]) print([str(i) for i in range(1, 11)]) print([i for i in range(1, 11) if i % 2 == 0]) # 生成的列表可以與遍歷的內容沒有一毛錢關係 print([250 for i in range
迴圈巢狀
-
迴圈能否巢狀
- 答:能
-
迴圈巢狀示例
# 外層迴圈控制列印多少行 for i in range(1, 11): # print('*' * i) # 記憶體迴圈控制每一行多少個 for j in range(i): print('*', end=' ') print()
練習:使用while實現一遍
-
思考:列表排序實現,氣泡排序法思路(升序排序)
lt = [8, 3, 6, 9, 5, 2, 4, 1, 7] 第一輪:[3, 6, 8, 5, 4, 1, 7, 9] 第二輪:[3, 6, 5, 4, 1, 7, 8, 9] 第三輪:[3, 5, 4, 1, 6, 7, 8, 9]
- 參考示例:
# 氣泡排序:升序排序 lt = [8, 3, 6, 9, 5, 2, 4, 1, 7] n = len(lt) # 外出迴圈控制排序多少輪 for i in range(n-1): # 記憶體迴圈控制相鄰兩個元素的比較 for j in range(n-1-i): if lt[j] > lt[j+1]: # 通用交換元素方式 # temp = lt[j] # lt[j] = lt[j+1] # lt[j+1] = temp # python中特有方式 lt[j], lt[j+1] = lt[j+1], lt[j] print(lt)
-
選擇排序
思路:先取出一個位置,用該位置的元素與後面的所有元素挨個比較,不合適就發生交換。 示例:lt = [8, 3, 6, 9, 5, 2, 4, 1, 7] 第一輪:1, 8, 6, 9, 5, 3, 4, 2, 7 第二輪:1, 2, 8, 9, 6, 5, 4, 3, 7 第三輪:1, 2, 3, 9, 8, 6, 5, 4, 7
字串操作
-
切割與拼接
s = 'I love you more than i can say' # 切割字串 # sep:指定按照什麼進行切割,預設按照空格切割 # maxsplit:指定最大切割次數,預設不限制次數 # ret = s.split(sep='abc', maxsplit=1) # 從右邊進行切割 ret = s.rsplit(' ', maxsplit=1) print(ret) s = 'Hello\nworld' # 按照換行進行切割 print(s.splitlines()) s = 'I love you more than i can say' ret = s.split() # print(ret) # 字串拼接 s2 = '*'.join(ret) print(s2)
-
查詢統計判斷
s = 'Hi buddy, if you have something to say, than say; if you have nothing to say, than go.' # 子串查詢:找到首次出現的位置,返回下標,找不到返回-1 # ret = s.find('hello') # 從後面查詢 # ret = s.rfind('to') # 統計子串出現的次數 # ret = s.count('if') # 判斷是否已指定內容開頭 # ret = s.startswith('Hi') # 判斷是否已指定內容結尾 ret = s.endswith('go.') print(ret)
-
轉換及替換
s = 'hellO worlD!' # 轉換為全大寫 print(s.upper()) # 轉換為全小寫 print(s.lower()) # 大小寫轉換 print(s.swapcase()) # 首字母大寫 print(s.capitalize()) # 每個單詞首字母大寫 print(s.title()) # 用指定的內容替換指定內容,還可以值替換次數 print(s.replace('l', 'L', 2))
-
型別判斷
s = 'abcABC2' # 是否是全大寫 print(s.isupper()) # 是否是全小寫 print(s.islower()) # 是否每個單詞首字母都大寫 print(s.istitle()) # 是否是全數字字元 print(s.isdecimal()) # 是否是全字母 print(s.isalpha()) # 是否全是字母或數字 print(s.isalnum())