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("别试了,都3次了还是,臭流氓!!!")


# 方法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("别试了,都3次了还是,臭流氓!!!")
# 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次之后,程序就会给出选择,那么我们就需要每尝试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
# 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("别试了,都3次了还是,臭流氓!!!")


# 方法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("别试了,都3次了还是,臭流氓!!!")
# for循环后面可以接else,但不可以elif
# for循环程序执行,当程序正常执行完成,就会执行else,如果不正常执行,就不会执行else,这里3次以内登陆之后,就会break跳出程序,这里就是不正常执行,就不会执行else程序,而3次以内没能登陆成功,就会执行到else程序

猜你喜欢

转载自www.cnblogs.com/zgzeng/p/12748246.html