While迴圈 基本迴圈 ...
While迴圈
基本迴圈
while 條件: 執行內容 #迴圈體 ... #迴圈體 ... #迴圈體 # 若條件為真,執行迴圈體內容 # 若條件為假,不執行迴圈體內容
問題1:輸出1--100間的所有整數
num = 1 while num <= 100: print(num) num += 1
問題2:用戶三次登陸
true_username = "sunwk" true_passwd = "abc" count = 1 while count <= 3: _username = input("please insert your name:") _passwd = input("please insert your passwd:") if _username == true_username and _passwd == true_passwd: print("welcome %s login ..." % _username) #此處使用了格式化輸出 break elif count == 3: print("輸入次數已達上限,請稍後重試 ...") else: print("用戶名密碼錯誤,請重新輸入 ...") count += 1 #格式化輸出實例: #列印字元串 %s (str) A = "sunwk" B = "zhubj" print("A=%s B=%s" %(A,B)) """ 執行結果如下: A=sunwk B=zhubj """ #列印整數 A = 10 B = 20 print("A=%d B=%d" %(A,B)) """ 執行結果如下: A=10 B=20 """ #列印浮點數 A = 2.1234 B = 3.1415 C = 10 D = 20 print("A=%f B=%f C=%f D=%f" %(A,B,C,D)) """ 執行結果如下: A=2.123400 B=3.141500 C=10.000000 D=20.000000 預設浮點數都保留6位小數 """ #列印浮點數(指定保留小數點位數) A = 2.1254 B = 3.1415 print("A=%.2f B=%.3f" %(A,B)) """ 執行結果如下: A=2.13 B=3.142 保留小數位數是,採用四捨五入方法的方法 """
問題3:輸出九九乘法表
first = 1 sec = 1 while first <=9: sec = 1 while sec <= first: print(str(sec)+"*"+str(first)+"="+ str(first*sec),end="\t") # \t 是製表符 sec += 1 print() # print() 預設使用時表示換行,等同於print(end="\n") first += 1
while也可以配合else使用,語法如下
while 條件: 執行內容 #迴圈體 ... #迴圈體 ... #迴圈體 else: #執行else是有條件的,前提就是while正常結束後,才能執行else,如果使用break強行結束,則不執行else 執行內容
for迴圈
基本迴圈
for iterating_var in sequence: statements(s) #sequence序列可以是字元串、函數、列表等等
實例1:序列為字元串
name = "python" for i in name: print("當前字元為:" + i) else: print("Good Bye !!!") """ 執行結果如下: 當前字元為:p 當前字元為:y 當前字元為:t 當前字元為:h 當前字元為:o 當前字元為:n Good Bye !!! """
實例2:序列為列表
name = ["sunwk","zhubj","shawj","tangs"] for i in name: print("當前名字為:" + i) else: print("Good Bye !!!") """ 執行結果如下: 當前名字為:sunwk 當前名字為:zhubj 當前名字為:shawj 當前名字為:tangs Good Bye !!! """
實例3:序列為函數-輸出1到10之間的偶數
for i in range(1,11): if i % 2 == 0: print(i) """ 執行結果如下: 2 4 6 8 10 Good Bye !!! """
此處我們引用了range()函數,簡單瞭解一下range()
#語法: range(start, stop, step) """ 參數說明: start: 計數從 start 開始。預設是從 0 開始。例如range(5)等價於range(0, 5); end: 計數到 end 結束,但不包括 end。例如:range(0, 5) 是[0, 1, 2, 3, 4]沒有5 step:步長,預設為1。例如:range(0, 5) 等價於 range(0, 5, 1) """ #例如: range(5) """ 輸出結果如下: [0,1,2,3,4] python2.x中輸出的是一個列表,但是在Python3.x中輸出的是一個對象 """ a = range(5) print(type(a)) # 查看a的類型,執行結果為:<class 'range'>,不是一個列表 b = list(a) #使用list函數返回列表 print(b) """ 執行結果如下: <class 'range'> [0, 1, 2, 3, 4] """
for迴圈也可以配置else使用,語法於while類似。
break語句
break是跳出當前迴圈
實例1:
num1 = 1 num2 = 1 while num1 <= 3: print("num1值為"+str(num1)+":"+"執行父迴圈") while True: if num2 == 2: print("num2值為"+str(num2)+":"+"跳出子迴圈") break #break跳出第二層while迴圈,上層迴圈繼續執行,總結就是break只會跳出當前的迴圈,而不是跳出全局迴圈。 else: print("num2值為"+str(num2)+":"+"執行子迴圈") num2 += 1 num1 += 1 else: print("Good Bye !!! ") """ 執行結果如下: num1值為1:執行父迴圈 num2值為1:執行子迴圈 num2值為2:跳出子迴圈 num1值為2:執行父迴圈 num2值為2:跳出子迴圈 num1值為3:執行父迴圈 num2值為2:跳出子迴圈 Good Bye !!! """
通過上面的實例,得到的結論是break只能跳出子迴圈,但是如果我要同時跳出父迴圈怎麼辦呢,通過反覆的代碼試驗,我發現可以設置一個break_flag來實現,以下是我的實例,可能還不是太理想,肯定還有其它方法的,但一想到我可是初學的小白啊,一下子就釋然了.....
num1 = 1 num2 = 1 while num1 <= 3: print("num1值為"+str(num1)+":"+"執行父迴圈") while True: if num2 == 2: print("num2值為"+str(num2)+":"+"跳出子迴圈") break_flag = True break #break跳出第二層while迴圈,上層迴圈繼續執行,總結就是break只會跳出當前的迴圈,而不是跳出全局迴圈。 else: print("num2值為"+str(num2)+":"+"執行子迴圈") num2 += 1 if break_flag: print("子迴圈結束了,父迴圈跳出") break num1 += 1 else: print("Good Bye !!! ") """ 執行結果如下: num1值為1:執行父迴圈 num2值為1:執行子迴圈 num2值為2:跳出子迴圈 子迴圈結束了,父迴圈跳出 """
continue語句
continue是結束本次迴圈,執行下次迴圈
實例1:輸出1-5的所有整數,跳過3
num = 0 while num < 5: num += 1 if num == 3: continue print(num) else: print("Good Bye !!!") """ 執行結果如下: 1 2 4 5 Good Bye !!! """