1. for循環
# for是有限循環,while是無限循環 # for后面也是可以接else _user = "zgzeng" _psw = "zgz" # 限制登陸3次,如果3次登陸失敗了,就會自動退出 for i in range(3): username = input("Your name:") password = input("Your password:") if username == _user and password == _psw: print("welcome to login our system!!!") else: print("Invalid your username or password!!!") # 當登陸3次都失敗了,優化給出提示再退出 # 方法1:使用標記 flag = False for i in range(3): username = input("Your name:") password = input("Your password:") if username == _user and password == _psw: print("welcome to login our system!!!") # 當flag =True的時候,會執行后面if的代碼 flag = True break else: print("Invalid your username or password!!!") if not flag: print("試了三次!") # 方法2:除了if后面可以接else外,for后面也可以接 for i in range(3): username = input("Your name:") password = input("Your password:") if username == _user and password == _psw: print("welcome to login our system!!!") break else: print("Invalid your username or password!!!") else: print("已經試了三次!") # for循環后面可以接else,但不可以elif # for循環程序執行,當程序正常執行完成,就會執行else,如果不正常執行,就不會執行else,這里3次以內登陸之后,就會break跳出程序,這里就是不正常執行,就不會執行else程序,而3次以內沒能登陸成功,就會執行到else程序
方法1和方法2的效果都是一樣,但是明顯方法2更加簡潔
2.while循環
while循環如果不加條件,就是一個死循環
while也是可以接else,與for效果是一樣的
counter = 0 while counter > 3: username = input("Your name:") password = input("Your password:") if username == _user and password == _psw: print("welcome to login our system!!!") # 當flag =True的時候,會執行后面if的代碼 flag = True break else: print("Invalid your username or password!!!") counter += 1 else: print("已經試了三次!!!")
# 程序優化每試3次,3次失敗后,給出選擇提示,是否繼續嘗試登陸 # 思路:每當循環試了3次之后,程序就會給出選擇,那么我們就需要每嘗試3次之后,就將counter清零 _user2 = "zgzeng" _pwd = "zgzeng" counter = 0 while counter < 3: username = input("請輸入用戶名:") password = input("請輸入密碼:") if _user2 == username and password == _pwd: print("歡迎登陸我的程序") break else: print("您的用戶名或者密碼有誤") counter += 1 keep_going_choice = input("輸入[y]將繼續,其他退出") if keep_going_choice == "y": counter = 0 # 這里的執行效果是每執行1次,程序就會問是否繼續,並沒有實現我們理想中的效果(3次詢問一次)
需要再加一個判斷
_user2 = "zgzeng" _pwd = "zgzeng" counter = 0 while counter < 3: username = input("請輸入用戶名:") password = input("請輸入密碼:") if _user2 == username and password == _pwd: print("歡迎登陸我的程序") break else: print("您的用戶名或者密碼有誤") counter += 1 if counter == 3: # 加一個判斷 keep_going_choice = input("輸入[y]將繼續,其他退出") if keep_going_choice == "y": counter = 0
將循環和嵌套循環中的兩次break進行關聯也需要用到標記位
flag = False # 目標:嵌套層循環break,我外層循環因為內層循環跳出也跳出,否則不跳出 # 知識點:標記位 for i in range(10): if i > 5: print(i) for j in range(10): print("第二層:",j) if j == 6: flag = True break if flag == True: # 這就將兩個break關聯起來了 break