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. c#中的partial关键字(转)

    c#中的partial关键字 Partial:      这是C#2.0的新特性 Partial关键字起到把一个class分段组合作用,能用于多个接口或一个继承 代码片断: namespace Com ...

  2. spring整合quartz并持久化

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

  3. 那些年我们没能bypass的xss filter

    个人很喜欢收集xss payload.在这里把自己平时挖xss时会用到的payloads列出来和大家一起分享.很希望大家能把自己的一些payload也分享出来.(由于 我是linux党,所以本文出现在 ...

  4. MATLAB的使用总结

    Log scale %# some random data x = .^(:); y = rand(size(x)); plot(log2(x), y) %# plot on log2 x-scale ...

  5. 小组项目alpha发布的评价

    新蜂团队一直都特别努力,这节课我也看到了他们努力的结果--项目可以顺利运行,在两个同学试玩期间没有出现BUG,不知道玩游戏的同学的心情,反正我们在台下看得很开心的. 飞天小女警组的礼物挑选系统,是一个 ...

  6. [转]在VS2010 VC++项目中引用Lib静态库(以Openssl为例)

    本文转自:http://kb.cnblogs.com/page/94467/ Openssl是个为网络通信提供安全及数据完整性的一种安全协议,囊括了主要的密码算法.常用的密钥和证书封装管理功能以及SS ...

  7. 每天学点GDB 12

    本文介绍在archlinux环境下,如何进行内核使用gdb配合qemu进行调试.   1. 安装qemu   2. 编译linux kernel 选择最新的内核版本,规避gcc编译出错的问题具体步骤如 ...

  8. php获得网站根目录的几个方法

    php获得网站根目录的几个方法 电脑软硬件应用网 45IT.COM 时间:2015-01-08 12:54 作者:佚名 在php中我们要得到网站根目录可以用很多全局变量实现了,如可以利用__file_ ...

  9. iptables的详细介绍及配置方法*

    Firewall(防火墙):组件,工作在网络边缘(主机边缘),对进出网络数据包基于一定的规则检查,并在匹配某规则时由规则定义的处理进行处理的一组功能的组件. 防火墙类型:根据工作的层次的不同来划分,常 ...

  10. B-Tree indexs

    mysql_High.Performance.MySQL.3rd.Edition.Mar.2012 A B-Tree index speeds up data access because the s ...