Python基础作业一:模拟用户登陆

作业要求:

1. 用户输入帐号密码进行登陆
2. 用户信息保存在文件内
3. 用户密码输入错误三次后锁定用户
4. 已锁定用户下次登陆直接禁止登陆

按老师要求,先画流程图,我用的visio,图形,线性规则也不太懂,请评论区留言指正。

作业重点问题分析:

1.账号密码需要存储在一个文件里,假设这是一个文本文件,假设每一样都存储一组账号和密码,那文件中,账号和密码之间需要有个分割标志,假设账号和密码必须用字母,那么分割标志不能是字母。

2.不同账号可能有相同的密码,不同密码也可能有相同的账号,用户名in文件中,且密码也in文件中,但用户输入的用户名跟密码可能对应的并不正确。为保证从文件读入的账号密码肯定是对应的,最好账号和密码成对读取到变量中,结合python的数据类型,字典符合这个特征。

3.被锁定的用户可以从文件读取到列表中。

下面是代码:

 1 # coding=utf-8 #声明字符集
 2 import os  #需要对文件进行操作,所以要对OS模块进行调用
 3 import csv #需要读取csv格式的账号密码文件,所以要对csv模块进行调用
 4 AccountPassWord=open('Account_passwd.csv','r') #以只读方式打开存储用户名密码的文件
 5 AccountPassWordList={}#建立一个字典变量,用于存储全部的账号密码
 6 for item in csv.DictReader(AccountPassWord): #csv.Dictreader方法可以获取字典类型的账号密码
 7     AccountPassWordList[item["Account"]]=item["Passwd"] #将csv文件的Account和对应的Passwd字段的数据,形成“用户名”:“密码”的组成形式
 8 
 9 LockedAccount=open('Locked_account.txt','r')
10 LockedAccount_W=open('Locked_account.txt','a')
11 LockedAccountList=[]
12 for item in LockedAccount:#将Locked_accout.txt中每行的用户名用列表的数据类型赋值给LockedAccountList变量
13    LockedAccountList.append(item.replace("\n","")) #通过切片,去掉换行符
14 
15 def closef():#定义函数,用于关闭打开的文件
16     AccountPassWord.close()
17     LockedAccount.close()
18     LockedAccount_W.close()
19 
20 InputAccout=input("请输入用户名,若退出登陆,请输入quit: ")
21 
22 if InputAccout in LockedAccountList: #当输入的账号在已锁定的名单,告知账号已锁定。
23     print('您的账号已锁定,请联系管理员。')
24     closef()
25 
26 if (InputAccout not in AccountPassWordList)&(InputAccout != 'quit'):#当输入的账号不存在,且输入的不是quit,显示需注册才可登陆。
27     print('您的账号不存在,请联系管理员注册账号')
28     closef()
29 
30 if InputAccout == 'quit':#当输入的为quit时,程序结束,关闭已打开的文件,退出程序。
31     print("已退出")
32     closef()
33 if InputAccout not in LockedAccountList:#当输入的账号不在已锁定的清单里,进入密码是否正确判断。
34     for i in range(4): #循环4次,最大可输入三次密码。
35         if i==3:#当循环第4次时,将用户用户名写入到已锁定用户列表文件中
36             LockedAccount_W.writelines(InputAccout+'\n')
37             print("错误超过3次,账号已锁定,请联系管理员。")
38             closef()
39             break
40         if i<3:
41             InputPasswd = input('请输入密码: ')
42             if InputPasswd != AccountPassWordList[InputAccout]:
43                 print('密码不正确,请重新输入!')
44                 continue
45             elif InputPasswd==AccountPassWordList[InputAccout]:
46                 print('登陆成功!')
47                 closef()
48                 break

 

转载于:https://www.cnblogs.com/worldinmyeyes/p/6681767.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值