椰蓉罐头 2019-01-26 13:39 采纳率: 100%
浏览 3768
已采纳

一个简单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条回答 默认 最新

  • 暗香独自开 2019-01-28 00:28
    关注

    你的第一段代码中,你首先定义了一个布尔型 也就是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(‘尝试次数超过限制’)[注意中英文符号],否则会
    程序执行完三遍后会闪退!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 用matlab 设计一个不动点迭代法求解非线性方程组的代码
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试