• for else


     今天写选课管理系统的时候,无意间用for else 写登录,发现个有趣的事(以下程序为实验程序,只为说明本博客主题)

            user = input('请输入账号')
            psw = input('请输入密码')
            with open(r'..dbuserinfo','r',encoding='utf-8')as f:   #f中有写好的账号和密码
                for i in f:
                    u,p,i = i.strip().split('|')
                    if u == user and p == psw:
                        print('登陆成功')break
                   else:
                        print('登录失败')        

    这么写当循环登录的时候,再判定到输入账户之前会显示n个'登录失败'

                for i in f:
                    u,p,i = i.strip().split('|')
                    if u == user and p == psw:
                        print('登陆成功')
                else:
                        print('登录失败')

    如果这么写,登录成功后,还会显示一个'登录失败'

    根据官网说明,在for循环式,当可迭代对象迭代完且为空的时候会执行else

    那么只能在for中引入break,这样就会直接跳出for,不去执行else

    以下为改后正常运行的程序

                for i in f:
                    u,p,i = i.strip().split('|')
                    if u == user and p == psw:
                        print('登陆成功')
                        break
                else:
                        print('登录失败')
  • 相关阅读:
    代理模式第一篇
    命令模式第二篇
    windows service 定时
    postman之asp.net webapi
    qq第三方登录
    core2.1下的identity 汉化
    asp.net core2.0里的Nlog
    Unable to create an object of type 'ApplicationDbContext'.
    identity使用mysql
    二进制位运算解决状态值
  • 原文地址:https://www.cnblogs.com/wjw6692353/p/10389429.html
Copyright © 2020-2023  润新知