一个简单Python程序的执行顺序问题

问题描述:想用python程序实现一个登陆验证用户名密码的效果,但是我修改前的python代码与我想象中的不太一样,修改后的python代码与我预想的执行结果(红色代码最后输出)一致,但是却不知其所以然,求大神解答

运行环境:Windows,pycharm

修改前的python代码如下:

user_n = "user"
user_p = "123"

bit = False

for i in range(3):
    user_name = str(input("请输入账户名:"))
    user_password = str(input("请输入密码:"))
    if user_name == user_n and user_password == user_p:
        bit = True
        print("登录成功,欢迎回来")
        exit()
    else:
        print("用户名密码错误,请重新输入")
if not bit:
    exit("尝试次数超过限制")

我预想的执行结果

图片说明

而我实际的执行结果

图片说明

修改后的python代码与我的预想执行结果一致,代码如下:

user_n = "user"
user_p = "123"

for i in range(3):
    user_name = str(input("请输入账户名:"))
    user_password = str(input("请输入密码:"))
    if user_name == user_n and user_password == user_p:
        print("登录成功,欢迎回来")
        exit()
    else:
        print("用户名密码错误,请重新输入")
else:
        exit("尝试次数超过限制")

1个回答

你的第一段代码中,你首先定义了一个布尔型 也就是bit = False,然后程序进入for循环(for循环要进行3次),其中在每一次循环的时候他都要判断
是否输入了正确的用户名以及秘密,很显然你的判断中的意思是在三次判断中只要有一次 user_name == user_n and user_password == user_p
即为登陆成功 而且 bit = True,如果没有判断出的话,bit 还是等于False,运行完for循环后再运行if not bit: exit("尝试次数超过限制")这句
因此,得出结果应该和你的预期一样,然后我还要提醒楼主,exit("尝试次数超过限制")应该为print(‘尝试次数超过限制’)[注意中英文符号],否则会
程序执行完三遍后会闪退!

qq_41058594
暗香独自开 回复椰蓉罐头: exit很快的显示出来的结果就是闪退
一年多之前 回复
Che_Rish100
椰蓉罐头 但是第一段代码执行的结果和预期不一样,不过我好想知道了原因,谢谢你啦,似乎print到显示器的速度比exit慢一些
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问