简单的登陆

要求:

1.用户名输错3次,系统退出

2.密码输错3次,账号被禁用

3.使用文件操作知识

流程图:

项目代码:

 def login():
i=0
while i <3 :
name = input("username:")
password = input('password:')
name_txt=open('uname.txt','r')
for line in name_txt.readlines(): #循环用户文件
(uname,passwd,lock) = line.strip('\n').split()#提取用户名,密码,跟锁信息
if uname == name:
if lock == 'true':
f = 0
while f < 3:
if passwd != password:
if f == 2:
print('账号/密码错误过多,账号已被锁定,请联系管理员')
old = uname + ' ' + passwd + ' ' + lock + '\n' #组合原来的用户信息
new_lock = 'fales'
new = uname + ' ' + passwd + ' ' + new_lock + '\n' #组合新的用户信息
d_f = open('uname.txt', 'r')
d = d_f.read().replace(old, new) #读取旧的用户信息,并替换
d_f.close()
print(d)
g_f = open('uname.txt', 'w+') #以写读方式打开原有文件(如果觉得不保险,可以将老文件备份,写入新的文件中)
g = g_f.write(d) #写入新的用户信息到文件
g_f.close()
name_txt.close()
exit(1)
else:
f += 1
print('账号/密码错误,还剩%s次' % (3 - f))
password = input('password:') #让用户重新输入密码
else:
print('Welcom') #登陆成功
name_txt.close()
exit(0)
# else:
# print('账号/密码错误过多,账号已被锁定,请联系管理员')
# name_txt.close()
# exit(1)
else:
print('账号已被锁定,请联系管理员')
name_txt.close()
exit(1)
else:
pass #按行搜索用户,没有搜索到就PASS让循环继续
else:
i += 1
if i == 3:
print("账号/密码错误次数过多,已被锁定,请联系管理员")#账号不存在(防止人刷账号,所以提示为这个)
name_txt.close()
exit(1)
else:
print("账号/密码有误,请重新输入")
continue
if __name__ == '__main__':
login()

简单登陆

最新文章

  1. 架构和模式的区别:三层架构和MVC在应用开发中的位置
  2. 数据结构:链表(python版)续:带有尾节点引用的单链表
  3. [Math &amp; Algorithm] 拉格朗日乘数法
  4. LeetCode Remove Element
  5. 求空间内两条直线的最近距离以及最近点的坐标(C++)
  6. [整]磁盘 I/O 性能监控指标和调优方法
  7. CodeForces 173B Chamber of Secrets 二分图+最短路
  8. Linux主机在LNMP环境中同时运行多个PHP版本
  9. 编程小计——消除Graphics图像边缘颜色不纯(抗锯齿)
  10. 【socket.io研究】1.官网的一些相关说明,概述
  11. VSTO之旅系列(五):创建Outlook解决方案
  12. MEF初体验之八:过滤目录
  13. ViewGroup可实现上下、各地跑马灯效果滚动
  14. JavaScript在智能手机上的应用-通过滑动修改网页字体大小
  15. grid编辑后时间格式不对问题
  16. Excel 一键上传到数据库
  17. [Linux] 使用Yum在CentOS上安装MySQL
  18. Redis基本数据类型介绍笔记
  19. HTML5学习笔记(二十五):事件
  20. 慢速HTTP拒接服务攻击(DoS)复现

热门文章

  1. 初识Spacy
  2. linux 多线程编程-读写者问题
  3. 【LeetCode】040. Combination Sum II
  4. 湖南程序设计竞赛赛题总结 XTU 1237 Magic Triangle(计算几何)
  5. jquery/原生js/css3 实现瀑布流以及下拉底部加载
  6. bzoj4453
  7. WPF win7+vs2010开发的打印功能,怎么在XP系统上无法打印
  8. GET 和 POST两种调用方式
  9. GroupItem ContextMenu Command mvvm
  10. 浏览器原生 form 表单POST 数据的两种方式