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")
    登陆系统
     
  • 相关阅读:
    vue开发chrome扩展,数据通过storage对象获取
    Vue手动集成less预编译器
    Google Translate寻找之旅
    Javascript Range对象的学习
    Javascript Promises学习
    SublimeText 建立构建Node js系统
    We're sorry but demo3 doesn't work properly without JavaScript enabled. Please enable it to continue.
    npm安装包出现UNMET DEPENDENCY报错
    (转载)命令行说明中格式 尖括号 中括号的含义
    Linux重启网卡服务Failed to start LSB: Bring up/down networking.
  • 原文地址:https://www.cnblogs.com/negu/p/11220506.html
Copyright © 2011-2022 走看看