zoukankan      html  css  js  c++  java
  • 环境小硕的转行之路-4-第一次作业-登陆系统

    第一周作业


    作业要求:

    1.创建一个登陆系统,用户一进去输入用户名密码必须和数据库中相一致才能登入,否则报错。
    2.输错3次密码,将用户名加入黑名单
    3.黑名单的用户即使下次登入也会弹出窗口不让登陆。

    注意事项:这次作业要用到字典、文件的知识已经超纲。需要先行自学。

    先期工作

    1.在pycharm中存放源码的一级文件夹下创建一个txt文本,名为userandpassword.txt,后输入如下图所示内容。

    2.创建一个一个空白txt文本名为blacklist.txt


    具体源码

     1 author : negu
     2 # -*- coding: utf-8 -*-
     3 #创建存放账户和密码的数据库
     4 user_dict = {} #创建一个字典,准备好当作账户密码的临时存放点
     5 try:#超纲语句
     6     with open('userandpassword.txt',"r") as dict_file: #读取数据库后关闭文件(不用打dict_file.close)
     7         for line in dict_file:#循环语句将数据库里的数据提出
     8             (username,password) = line.strip().split(":")#strip去tab,split将账户和密码以":"为分隔符切分
     9             user_dict[username] = password #将数据存入字典中,username当key,password当value
    10 except IOError:
    11     print("{file} not exit".format(file = filename)) #IOError代表没创建记事本
    12 namelist = [] #创建一个列表存放黑名单
    13 try:
    14     with open('blacklist.txt',"r") as list_file: #读取数据库后关闭文件
    15         for blackname in list_file:#利用循环将黑名单数据库里的数据转移到列表黑名单
    16             namelist.append(blackname.strip('
    '))#strip去头尾空格
    17 except IOError:
    18     print("{file} not exit".format(file = filename))
    19 while True :#第一层大循环,用作登陆成功后退出用。
    20     count = 0
    21     name = input("please input your username:	")
    22     if name in namelist:#判断是否在黑名单中
    23             print("{0} is blocked".format(name))
    24             userconfirm = input("do you want to change username? Y/N")#询问是否继续输入别的用户名
    25             if userconfirm == "y":
    26                 continue
    27             else:
    28                 break
    29     if name in user_dict.keys():#判断用户名是否在字典数据库中中
    30             while count <=3 :
    31                 _password = input("please input your password:")
    32                 if _password == user_dict[name]:#在字典中索引密码
    33                     print("hello {name}".format(name=name))
    34                     exit()
    35                 else:
    36                     print("wrong password")
    37                     count +=1
    38                     userconfirm = input("do you want to change username? Y/N")#询问是否继续输入别的用户名
    39                     if userconfirm == "y":
    40                         continue
    41                     else:
    42                         break
    43             namelist.append(name)#超过三次、加入黑名单
    44             with open("black.list","a") as add_list:
    45                 add_list.write("
    "+name)#将黑名单移入数据库
    46     else:print("username not exit")
    登陆系统
     
  • 相关阅读:
    一行代码更改博客园皮肤
    fatal: refusing to merge unrelated histories
    使用 netcat 传输大文件
    linux 命令后台运行
    .net core 使用 Nlog 配置文件
    .net core 使用 Nlog 集成 exceptionless 配置文件
    Mysql不同字符串格式的连表查询
    Mongodb between 时间范围
    VS Code 使用 Debugger for Chrome 调试vue
    css权重说明
  • 原文地址:https://www.cnblogs.com/negu/p/11220506.html
Copyright © 2011-2022 走看看