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. MySQL 里面的Where 和Having和Count 和distinct和Group By对比

    mysql> select accid as uid,date(datetime) AS datetime from game.logLogin GROUP BY accid HAVING da ...

  2. grep 命令搜索 带空格的字符

    grep - n ' a[[:space:]]b' 就能搜索到 'a    b'类似的字符了 如果要搜索带单引号的 用双引号括起来 如果要搜索带双引号的 用单引号括起来

  3. 微博开发平台java SDK demo学习之examples(demo)

    本文介绍demo中函数的功能分块 账号 评论 收藏 关系/好友分组 地理信息 OAuth2(开发指南) 位置服务(开发指南)

  4. 如何删除 OpenStack Nova 僵尸实例

    转自:http://www.vpsee.com/2011/11/how-to-delete-a-openstack-nova-zombie-instance/ 前天强制重启一台 OpenStack N ...

  5. fail2ban 保护

    Fail2ban是一款非常使用的软件,它能够监控系统日志,能够有效的防止ssh被暴力破解,下面小编将针对Fail2ban在Linux下的安装和使用给大家做个介绍,一起来了解下吧. https://gi ...

  6. POJ 1386 Play on Words(欧拉图的判断)

    Play on Words Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 11838   Accepted: 4048 De ...

  7. Ant Tasks 使用总结

    xmlproperty http://ant.apache.org/manual/Tasks/xmlproperty.html Ant的xmlproperty的Task能直接读取一个xml文件以生成相 ...

  8. PHP 错误与异常 笔记与总结(3)PHP 配置文件(php.ini)中与错误相关的选项 与 设置错误级别

    [PHP 配置文件中与错误相关的选项 ] 选项 描述 error_reporting 设置错误报告的级别 display_errors 是否显示错误 log_errors 设置是否将错误信息记录到日志 ...

  9. Javascript 笔记与总结(2-10)删除节点,创建节点

    [删除节点] 步骤: ① 找到对象 ② 找到他的父对象 parentObj ③ parentObj.removeChild(子对象); [例] <!DOCTYPE html> <ht ...

  10. PHP不能创建csv中文名文件

    使用iconv 将utf-8转换成gb2312即可$name = iconv("utf-8","gb2312",'分销商下载课件记录');