一、循環【重點掌握】
1.嵌套循環
類似于嵌套if語句
語法:
while 表達式1:while 表達式2:語句
# 1. # 循環5次,打印0~4 m = 0 while m < 5:print(m)m += 1 # 循環3次,打印0~2 n = 0 while n < 3:print(n)n += 1print("*" * 50)# 2. # a. # 外層循環 m = 0 while m < 5:# 內層循環n = 0while n < 3:print(f"{m}={n}")n += 1m += 1 # 外層循環:5次,內層循環:3次,總共打印15條print("*" * 50)# b m = 0 n = 0 while m < 5:while n < 3:print(f"{m}={n}")n += 1m += 1# 注意:在代碼執行的過程中,不管循環語句是否嵌套,都是將循環執行完畢,后面的才有執行的機會print("*" * 50)# 3.應用:打印九九乘法表 """行 列 1*1=1 1 1 1*2=2 2*2=4 2 2 1*3=3 2*3=6 3*3=9 3 3 ......1*9=9 2*9=18 3*9=27 4*9=36 ..... 9*9=81 9 9規律:a.列*行=乘積b.行的取值范圍:1~9c.列的取值范圍:1~ 當前行數d.使用嵌套循環,外層循環控制的是行, 內層循環控制的是列 """ # 外層循環:控制的是行 row = 1 while row <= 9:# 內層循環:控制的是列col = 1while col <= row:print(f"{col}*{row}={col * row}",end=" ")col += 1row += 1print() # 換行for row in range(1,10):for col in range(1,row + 1):print(f"{col}*{row}={col * row}", end=" ")print()
2.break和continue
""" 【面試題】 break:打斷,表示結束當前循環【break書寫在哪個循環中,就結束哪個循環,就近原則】 continue:繼續,表示結束當前循環的本次循環,繼續下一次循環 """# 1.break ******* # a. m = 0 while m < 10:print(m)m += 1 # 0-9print("*" * 30)# b # 注意1:break是一個關鍵字,但是可以單獨作為一條語句使用 # 注意2:如果break應用在單層循環【while和for】中,在滿足條件的情況下,表示結束循環 m = 0 while m < 10:print(m)if m == 3:breakm += 1print("*" * 30)# c. # 注意3:break應用在循環中,結束的是當前循環【就近原則】 m = 0 while m < 5:n = 0while n < 3:if m == 2:breakprint(f"{m}={n}")n += 1m += 1 # 唯獨沒有2=0 2=1 2=2print("*" * 30)m = 0 while m < 5:n = 0while n < 3:print(f"{m}={n}")if n == 1:breakn += 1m += 1print("*" * 30)# 2.continue # m = 0 # while m < 10: # if m == 3: # # break # continue # print(m) # m += 1m = 0 while m < 10:if m == 3:m += 1continueprint(m)m += 1# 練習:驗證用戶的用戶名和密碼,當用戶名為root,密碼為abc的時候,表示驗證成功, # 否則驗證失敗,失敗時允許重復輸入三次 error_num = 0 while True:username = input("請輸入用戶名:")password = input("請輸入密碼:")if username == 'root' and password == 'abc':print("登錄成功!")breakelse:print('登錄失敗,用戶名或密碼錯誤,請重新輸入')error_num += 1# 當error_num == 3則結束循環,否則循環繼續if error_num == 3:print("已經錯誤三次,禁止登錄!")breakelse:continue
3. else分支
""" 語法: while xxx:xxx else:xxxfor 變量 in 容器:xxx else:xxxfor 變量 in 容器:if xxx:xxxelse:xxx else:xxx """# 1.注意1:當循環中沒有break語句時,循環執行完畢之后,else代碼塊最后都會被執行,不常用 m = 0 while m < 5:print(m)m += 1 else:print('else被執行了')for n in range(5):print(n) else:print("else被執行~~~~")print("*" * 50)# 2.注意2:當循環中有break語句且break語句被執行了,則else不會執行 常用******* # 如果break執行,則else不執行,如果break不執行,else會執行 m = 0 while m < 5:print(m)if m > 10:breakm += 1 else:print('else被執行了')for n in range(5):print(n)if n > 10:break else:print("else被執行~~~~")# pass:占位語句,沒有實際含義,只是為了保證代碼結構的完整性,在實際操作中,用于暫時性的占位# 練習:從控制臺輸入一個數字,判斷該數是否是質數 # 質數【素數】:只能被1或它本身整除的數,最小的質數是2 num = input("請輸入一個數字:") if num.isdigit(): # 非負數num = int(num)if num < 2:print(f"{num}不是質數")else:# 思路:判斷10是否是質數,只需要在2~9之間找到一個數,能整除10,則說明10不是質數for n in range(2,num):if num % n == 0:print(f"{num}不是質數")break # 如果得到結論,可以提前結束循環else:print(f"{num}是質數") else:print("輸入有誤")
4.死循環
# 1.語法 """ while 1:passwhile True:pass注意:死循環大多數結合break使用 """# 2.練習:猜數字游戲 """ a.從控制臺輸入一個數,和程序產生的隨機數進行比較,范圍為1~100 b.根據比較的結果輸入的數 > 隨機數,提示:你猜大了,往小了猜輸入的數 < 隨機數,提示:你猜小了,往大了猜輸入的數 == 隨機數,提示:恭喜你,猜中了 """ import random random_num = random.randint(1,100) while True:input_num = int(input("請輸入1~100之間的整數:"))if input_num > random_num:print("你猜大了,往小了猜")elif input_num < random_num:print("你猜小了,往大了猜")else:print("恭喜你,猜中了")# 猜中表示游戲結束,則結束死循環break