zoukankan      html  css  js  c++  java
  • python 基础 day01—task_用户登录三次错误被锁定

    自学练习,记录下来,如有不对的地方,欢迎各位大神指出来!

    题目:

    编写登录接口

      1.输入用户名密码

      2.认证成功后显示欢迎信息

      3.输错三次后锁定

    要求:

      1.正确的用户名密码须储存在一个文件里面。

      2.锁定用户后再次登录,将会提示用户被锁定。

    Readme :

     1.user_file为存放账号密码的文件

    2.lock为存放被锁定用户的文件,默认为空。

    3.程序会用输入的账号密码跟user文件信息对比,若相符则login,若账号不相符直接退出程序,若账号相符,密码错误三次以上则把账号写入lock文件。

    4.程序会用输入的账号跟lock文件信息对比,若相符,则提示用户被锁定

    流程图如下:

    代码:

     1 #cherry_cui
     2 
     3 username = input("username:").strip()   #输入用户名.strip()用作去掉前后空格
     4 
     5 
     6 lock_file = open('D:studypythonday1day01lock.txt', 'r+')  #打开lock文件,权限是读取更新,并赋值给lock_file变量
     7 locklist = lock_file.readlines()         #使用.readlines的方法  逐行读取lock文件信息,并赋值给locklist
     8 
     9 for lockline in locklist:               #用for循环读取lock文件里面的信息
    10     lockline = lockline.strip('
    ')     #用.strip()去掉换行符
    11     if username == lockline:            #若username和lock文件信息有相符,则提示该名字被锁,并退出程序
    12         print("The name is locked")
    13         exit()
    14 
    15 user_file = open('D:studypythonday1day01\user.txt', 'r') #打开user文件(u是unicode码,所以需要转义),权限是读取,并赋值给user_file变量
    16 userlist = user_file.readlines()
    17 
    18 for userline in userlist:
    19     (user, pwd) = userline.split()  #分别获取user文件里面的账号信息
    20     if username == user:
    21         p = 0
    22         while p < 3:
    23             password = input("password:")
    24 
    25             if password == pwd:
    26                 print("Welcome user {user} login!".format(user=username)) #账号密码验证通过,并退出程序
    27                 exit()
    28 
    29             else:
    30                 print("Invalid password!try again!")  #密码验证不通过,输出提示,并转入下次循环
    31                 p += 1  #等同 p=p+1
    32 
    33         else:
    34             lock_file.write('%s
    ' % username)  #超过三次输入密码错误,则把username写入lock文件中
    35             print("The user {user} will be locked".format(user=username))
    36 
    37 
    38         exit()
    39 
    40 print("The name does not exist!")
    41 lock_file.close() #打开的文件必须要关闭,不然会占内存资源
    42 user_file.close()
    View Code

     结果:

    情景一:账号密码都正确!

    情景二:账号错误

    情景三:三次密码错误

    再次登录cherry

  • 相关阅读:
    Java 设计模式——状态模式
    Java 设计模式——外观模式
    Java高级之虚拟机加载机制
    17.1.1.6 Creating a Data Snapshot Using Raw Data Files 创建一个数据快照使用 Raw Data Files
    17.1.1.5 Creating a Data Snapshot Using mysqldump
    17.1.1.4 Obtaining the Replication Master Binary Log Coordinates 得到复制master binary log 位置:
    17.1.1.3 Creating a User for Replication 创建一个用于用于复制:
    17.1.1.2 Setting the Replication Slave Configuration
    17.1.1.1 Setting the Replication Master Configuration 设置复制的master 配置:
    17.1.1 How to Set Up Replication 设置复制:
  • 原文地址:https://www.cnblogs.com/cherrycui/p/8793740.html
Copyright © 2011-2022 走看看