Python-S13-day1

需求:

1.让用户输入账号密码,账号密码正确,登陆程序,打印欢迎信息;

2.如果账号,或密码输入错误,提示用户重新输入,用户有三次机会;

3.如果用户第三次输入的账号或者密码还是不正确,就把第三次输入的账号锁定。

主程序:


#!/usr/bin/python env
#_*_coding:utf-8 _*_
userfile1='userfile'
lockfile1='lockfile'
userfile=open(userfile1,'r+')
lockfile=open(lockfile1,'r+') login_flag = False
#设置一个标志位,用于判断用户是否登陆成功;
for i in range(3):
username=input("username:")
for lockuser in lockfile.readlines():
lockuser = lockuser.split()
#把被锁定的账号,转换成一个列表;
if username in lockuser:
#判断账号是否在锁定列表中,如果在,就退出;
exit("%s user is lock"%username)
password = input("password:")
for line in userfile.readlines():
line = line.split()
#把允许登陆的用户名,密码转换成列表;
user = line[0]
#把登陆账号赋值给user
passwd = line[1]
#把登陆密码赋值给passwd
if user == username and passwd == password:
#判断账号,密码是否正确,如果正确,登陆并打印欢迎信息;
exit("welcomto login.")
login_flag = True
#标志位,判断用户是否登陆成功;
if login_flag == False:
print("user or passwd error.")
else:
print("%s user is lock."%username)
lockfile.write("\t%s"%username)
lockfile.close()
#循环三次后,用户还没有登陆成功,就把账号锁定;
 

Readme:

1.这个程序一共三个文件:userfile存放登陆账号,密码的文件;

            lockfile存放被锁定的账号;

            login.py登陆主程序;

流程图:

思路二(功能全部实现):

#!/usr/bin/python env
#_*_coding:utf-8 _*_
user = open('db','r+')
lock = open('db1','r+')
mark = False
for i in range(3):
username = input("input user name:")
for line in lock.readlines():
line = line.split("|")
if username in line:
exit("user is lock.")
passwd = input("input you password.")
for pwd in user.readlines():
pwd = pwd.split("|")
if pwd[0] == username and pwd[1].strip("\n") == passwd:
exit("welcoto login.")
else:
print('user or passwd error.')
else:
print("%s user is lock"%username)
lockuser = open('db1','a')
lockuser.write("|"+"%s"%username)
lockuser.close() * lockuser.txt
0||1|11
*loginuser.txt
admin|123
freddy|123
 

思路三(函数写法):

#用户输入三次,密码不正确,锁定账号,功能没有实现;

def register(user,pwd):
reg = open('db','a')
reg.write("\n" + user + "|" + pwd )
reg.close() def login (user,pwd):
lockuser = open('db1','r')
for line in lockuser.readlines():
line = line.split("|")
if user in line:
exit("user is lock.")
userpwd = open('db','r')
for logpwd in userpwd:
logpwd = logpwd.split("|")
if user == logpwd[0] and pwd == logpwd[1].strip("\n"):
exit("welcome to login")
else:
print("user or password error")
input_num = input("input y or n.")
if input_num == 'y':
main()
else:
exit() def main():
choice = input("1.register. 2.login.")
if choice == '':
username = input("username:")
password = input("password:")
register(username,password)
elif choice == '':
username = input("username:")
password = input("password:")
login(username,password)
main()

Python-S13作业-day1-之登陆程序的更多相关文章

  1. Python作业之三次登陆锁定用户

    作业之三次登陆锁定用户 作业要求如下: 1. 输入用户名和密码 2. 认证成功提示欢迎信息 3. 认证失败三次锁定用户 具体代码如下: 方法1: import os#导入os模块 if os.path ...

  2. 用python 实现录入学生作业情况的小程序

    写一个录入学生作业情况的一个程序 1.查看学生作业情况 2.录入学生作业情况 3.可以让输入3次,需要为空的情况 homeworks = { ‘张流量’: {‘2018.3.22’:”未交”,’201 ...

  3. Python之路,Day1 - Python基础1

    本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是个什么鬼? 数据类型初识 数据运算 表达式if ...else语 ...

  4. Python之路,Day1 - Python基础1(转载Alex)

    本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是个什么鬼? 数据类型初识 数据运算 表达式if ...else语 ...

  5. Python之路,Day1 - Python基础1 --转自金角大王

    本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是个什么鬼? 数据类型初识 数据运算 表达式if ...else语 ...

  6. python之路-Day1

    Python 是一门什么样的语言? python是一门动态解释性的强类型定义语言 动态语言:动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,永远也不用给任何变量 ...

  7. 小白的Python之路 day1

    Python之路,Day1 - Python基础1 本节内容 Python介绍 发展史 Python 2 or 3? 一. Python介绍 python的创始人为吉多·范罗苏姆(Guido van ...

  8. 小白的Python之路 day1 变量

    Python之路,Day1 - Python基础1 变量 变量用于存储在计算机程序中引用和操作的信息.它们还提供了一种用描述性名称标记数据的方法,这样我们的程序就能更清晰地被读者和我们自己理解.将变量 ...

  9. Python之旅Day1 数据类型初识(数字|字符串|列表|数据运算) 编码 表达式(if...else|for|while)

    初识PYTHON Python(英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/), 是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum(吉多·范罗苏姆)于 ...

随机推荐

  1. spring整合quartz并持久化

    spring整合quartz有两种方式: 一.常见是使用配置文件,将定时任务保存到内存中 简单示例: <!-- 短信催还提醒任务调度 --> <bean id="overd ...

  2. 使用CSS3实现百叶窗

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title&g ...

  3. 14. Launch an instance

    Controller Node: 1. source demo-openrc.sh 2. ssh-keygen 3. nova keypair-add --pub-key ~/.ssh/id_rsa. ...

  4. 移动Web单页应用开发实践——实现Pull to Request(上/下拉请求操作)

    在单页应用开发中,无论是页面结构化,还是Pull to Request,都离不开一个技术——页面局部滚动.当下的移动web技术,主要使用下面两种方式实现局部区域的滚动: 基于IScroll组件,也有很 ...

  5. jquery修改a标签的href链接和文字

    可以先体验一下效果:http://keleyi.com/keleyi/phtml/jquery/2.htm 以下修改a标签的href链接和修改文字的代码: <script type=" ...

  6. CodeForces 625A 思维

    题意是说一个人喝酒 有两种办法 买塑料瓶的 a块钱 喝了就没了 或者是买玻璃瓶的b块钱 喝完还能卖了瓶子c块钱 求最多能喝多少瓶 在开始判断一次 a与b-c的关系 即两种方式喝酒的成本 如果a< ...

  7. 用 BigDump 工具导入超大 MySQL 数据库备份文件

    用 BigDump 工具导入超大 MySQL 数据库备份文件  创建于 2010-07-01, 周四 00:00  作者 白建鹏 在<Joomla! 1.5 网站防黑9条戒律>这篇文章中, ...

  8. 腾讯星座运势api

    请求地址: http://app.data.qq.com/?umod=astro&act=astro&jsonp=1&func=TodatTpl&t=4&a=t ...

  9. PHP文件操作 之往一个文件写入数据

    //打开一个文件 $f = fopen($filename,'wb'); $filename:打开一个文件,不存在则自动创建,如果不能创建,说明指定的文件目录有错误 wb:写入的方式 ---- 覆盖原 ...

  10. linux面试题及答案

    http://www.cnblogs.com/itech/archive/2011/02/12/1952857.html 一.填空题:1. 在Linux系统中,以 文件 方式访问设备 .2. Linu ...