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

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

报告相同问题?

悬赏问题

  • ¥35 平滑拟合曲线该如何生成
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站