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

一个简单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(‘尝试次数超过限制’)[注意中英文符号],否则会
    程序执行完三遍后会闪退!

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

报告相同问题?

悬赏问题

  • ¥50 关于#html5#的问题:H5页面用户手机返回的时候跳转到指定页面例如(语言-javascript)
  • ¥15 无法使用此凭据登录,因为你的域不可用,如何解决?(标签-Windows)
  • ¥15 yolov9的训练时间
  • ¥15 二叉树遍历没有报错但无法正常运行
  • ¥15 在linux系统下vscode运行robocup3d上场球员报错
  • ¥15 Python语言实验
  • ¥15 SAP HANA SQL 增加合计行
  • ¥20 用C#语言解决一个英文打字练习器,有偿
  • ¥15 srs-sip外部服务 webrtc支持H265格式
  • ¥15 在使用abaqus软件中,继承到assembly里的surfaces怎么使用python批量调动