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

主要采用循环语句和条件语句进行程序流程的控制,加入文件的读写操作

 while True:
choice = input("登陆L 注册R 退出Q:").strip()
#用户登录流程
if choice.lower() == 'l':
l_flag = False
count = 1
tmp = ''
while True:
user_name =input("请输入用户名(或者'q'退出):").strip()
if not user_name:continue
if user_name == 'q':
print("退出成功!")
exit()
user_pwd = input("请输入用户密码(或者'q'退出):").strip()
if not user_pwd:
print("密码不能为空,请重新输入!")
continue
if user_pwd == 'q':
print("退出成功!")
exit()
with open("locked_id",mode="r",encoding="utf8") as f_locked:
for line in f_locked:
if line.startswith("username:") and user_name in line and len(user_name)!=0:
print("该用户已经被锁定,请联系管理员!")
exit()
with open("user_id",mode="r",encoding="utf8") as f_reed:
for line in f_reed:
if line.startswith("username:") and user_name in line and len(user_name) != 0:
l_flag = True
tmp = line
if l_flag:
if tmp.split(":")[2].strip() == user_pwd:
print("用户登录成功!")
l_flag = False
exit()
elif count >= 3:
with open("locked_id",mode="a",encoding="utf8") as f_locked:
f_locked.write("\nusername:"+user_name)
print("您的密码错误三次,用户被锁定!")
l_flag =False
exit()
else:
count += 1
l_flag =False
print("密码错误,请重新输入!")
continue
else:
print('用户名不存在,请重新登录!') #用户注册流程
if choice.lower() == 'r':
r_flag = False #注册过程标志位
while True:
new_user_name =input("请输入注册用户名(或者'q'退出):").strip()
if not new_user_name:continue #用户名为空开始下一个循环
if new_user_name == 'q':
print("退出成功!")
exit()
new_pwd = input("请输入用户密码且不少于6位(或者'q'退出):").strip()
if new_pwd == 'q':
print("退出成功!")
exit()
if len(new_pwd) < 6:
print('密码不能为空且不少于6位!')
continue
with open("user_id",mode="r+",encoding="utf8") as f:
f.seek(0)
for line in f:
if line.startswith("username:") and new_user_name in line: #判断是否已经有该用户
print("该用户已经被注册!")
r_flag = True
break
if not r_flag:
f.write("\nusername:" + new_user_name)
f.write("\t|password:" + new_pwd)
print("新用户注册成功!")
r_flag = False
break #退出流程
if choice.lower() == 'q':
print("退出成功!")
exit()

模拟登陆代码

Python做的第一个小项目-模拟登陆的更多相关文章

  1. 跟我一起做一个vue的小项目(二)

    这个vue项目是紧跟着之前的项目跟我一起做一个vue的小项目(一)来的. 我继续后面的开发(写的比较粗糙,边学边记录) 下图是header头部的样式 header组件内容如下 //header.vue ...

  2. 用jinja做了个E-Letter小项目

    做了一个html E-Letter项目. 邮件模板采用jinja2, html 邮件内容生成简直太爽了. 整个项目开发只用了2个小时, 调试却花了大半天时间, 生成的邮件总是发不出去. 于是, 打开 ...

  3. Python爬虫实例(四)网站模拟登陆

    一.获取一个有登录信息的Cookie模拟登陆 下面以人人网为例,首先使用自己的账号和密码在浏览器登录,然后通过抓包拿到cookie,再将cookie放到请求之中发送请求即可,具体代码如下: # -*- ...

  4. Python 做过哪些有趣的项目

          1 icedx   241 天前 via Android   ♥ 1 考虑到Windows 下的类Alfred 软件都太傻逼 自己用PyQT 写了一个       2 crazyxin19 ...

  5. Python爬虫01——第一个小爬虫

    Python小爬虫——贴吧图片的爬取 在对Python有了一定的基础学习后,进行贴吧图片抓取小程序的编写. 目标: 首先肯定要实现图片抓取这个基本功能 然后实现对用户所给的链接进行抓取 最后要有一定的 ...

  6. 从Python小白到第一个小游戏发布

    1.安装必要的环境(附图两张) 直接下载安装程序,本人win10系统,根据电脑系统下载并安装对应的python.exe,安装路径可以选择D盘的,具体安装细节这里就不说了,不知道的可以留言或者找度娘 2 ...

  7. geek网工作室主页------我的第一个小项目

    传送门:袁咩咩的小小博客 很快,就到了大二的寒假,大学的生活就这样过去了接近一半,之前听说大二寒假会有项目什么的,已经准好了心理准备. 但第一次着手项目,还是有点小紧张 在这之前我已经看了一些框架,也 ...

  8. 用Python做一个简单的小游戏

    学习总是枯燥的,对于Python小白的我来讲,更是乏味的.为了提高学习的兴趣,今天我就来写一个小程序练练手. 数字猜谜游戏相信大家都不陌生,A给出最小值最大值,B写一个该范围内的数,A猜测写下的是多少 ...

  9. 跟我一起做一个vue的小项目(七)

    先看下我们所做项目的效果 这些数据都是我们在data中定义的,不是从后端数据中请求的.那么 接下来我们使用axios渲染数据 npm install axios --save 每个组件里面的数据都不相 ...

随机推荐

  1. Tomcat启动错误【Error listenerStart】

    今天启动Tomcat启动不了,报以下错: org.apache.catalina.core.StandardContext startInternal SEVERE: Error listenerSt ...

  2. 【BZOJ】1015 [JSOI2008]星球大战starwar(并查集+离线处理)

    Description 很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治者整个星系.某一天,凭着一个偶然的机遇,一支反抗军摧毁了帝国的超级武器,并攻下了星系中几乎所有的星球.这些星球通过 ...

  3. 管中窥豹——从OVS看SDN

    网络虚拟化是当前云计算最重要的特点之一,打通租户网络之间互通以及访问控制策略,最重要的是满足租户之间的网络隔离,这才是云计算网络的特点.而SDN的产生则是在网络虚拟化中,将控制面和业务面分离,控制面只 ...

  4. WPF加载程序集中字符串资源

    WPF资源 WPF资源使用其实的也是resources格式嵌入资源,默认的资源名称为"应用程序名.g.resources",不过WPF资源使用的pack URI来访问资源. 添加图 ...

  5. springboot自定义配置源

    概述 我们知道,在Spring boot中可以通过xml或者@ImportResource 来引入自己的配置文件,但是这里有个限制,必须是本地,而且格式只能是 properties(或者 yaml). ...

  6. ELK系列~NLog.Targets.Fluentd到达如何通过tcp发到fluentd

    最近火的不能再火的日志框架就是ELK,其中E(Elasticsearch)表示日志存储,L(Logstash)表示日志收集,K(kibana)表示日志的UI界面,用来查询和分析,而其中的L可以使用Fl ...

  7. MVC-HtmlHelper简单总结

    Asp.Net MVC - Htmlhelper 总结 HtmlHelper是一个返回Html字符串的方法.返回的字符串可以是任意类型.例如你可以使用HtmlHelper方法返回一个标准的html标签 ...

  8. 关于python如果没有numpy模块如何处理

    1.在python中,你在python的shell输入>>>import numpy 但是编译器告诉你没有numpy库,这时候你就要导入python库,那么如何导入呢 2.收下访问h ...

  9. Acitiviti笔记(一)

    一.核心组件 ProcessEngine:流程引擎的抽象,对于开发者来说,它是我们使用Activiti的facade,通过它可以获得我们需要的一切服务.类似于一个容器工厂,来保存创建的ProcessE ...

  10. LeetCode 628. Maximum Product of Three Numbers (最大三数乘积)

    Given an integer array, find three numbers whose product is maximum and output the maximum product. ...