python中for循環(有限循環)和while循環(無限循環)


 

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM