作业一要求:

1 输入用户名密码

2 认证成功后显示欢迎信息

3 输错三次后锁定

import os

#生成保存用户信息的字典
d_userinfo = {}
#保存用户登录字典
input_login_username = {}
#保存锁定用户列表
lock_user = [] #从userinfo中获取用户登录信息:用户名称、口令
userinfo_file = open("userinfo", "r")
#将用户信息添加到d_userinfo字典中
for line in userinfo_file.readlines():
_userinfo = line.replace("\n","").split("|");
#将用户添加到字典中
d_userinfo.update({_userinfo[0]:_userinfo[1]})
#关闭文件
userinfo_file.close() #获取锁定用户
lockinfo = open("lockinfo", "r")
#将锁定用户添加到锁定列表中
for line in lockinfo.readlines():
lock_user.append(line.replace("\n", ""))
lockinfo.close() #用户开始登录
input_count = 0
i_username = ""
while input_count < 3:
input_count += 1
i_username = input("Please enter your name:")
i_passowrd = input("Please enter you password:")
#判断用户输入是否为空
if len(i_username) == 0 :
print("用户名称不能为空,请输入用户名称!")
continue
#判断用户是否已锁定
if i_username in lock_user:
print("用户已锁定!")
break
#先判断用户字典表中是否有该用户
if d_userinfo.get(i_username):
#判断用户口令是否一致
if i_passowrd==d_userinfo.get(i_username):
print("Hello {name}!".format(name=i_username))
break
else :
#说明用户输入的用户名称正确,但口令不对
print("用户口令错误!")
else :
#说明用户输入的用户名称不正确
print("用户名称或口令输入错误!") #将登录输入的用户名称保存到输入登录用户字典中
input_login_username.setdefault(i_username, i_username)
else :
if len(input_login_username) == 1 :
# 锁定用户
print("锁定用户")
#"a"表示追加方式写
fo = open("lockinfo", "a")
fo.write(i_username+"\n")
fo.close()
else :
#输入三次用户名称或口令都不正确,退出登录
print("输入3次都不正确,再见!")

python day 1 homework 1的更多相关文章

  1. python day 1 homework 2

    多级菜单 1 三级菜单 2 可依次选择进入各子菜单 3 所需新知识点,列表,字典 province_info = {":{"name":"黑龙江", ...

  2. Python Homework 001

    1 #!/usr/bin/env python 2 #-*- coding:utf-8 -*- 3 4 import getpass 5 name = "xilong" 6 pas ...

  3. 【Python】Coding the Matrix:Week 5: Dimension Homework 5

    这一周的作业,刚压线写完.Problem3 没有写,不想证明了.从Problem 9 开始一直到最后难度都挺大的,我是在论坛上看过了别人的讨论才写出来的,挣扎了很久. Problem 9在给定的基上分 ...

  4. python面向对象一

    1.1三种编程方法论 1.面向过程:把复杂的任务一步一步分解成简单的任务. 2.函数式编程:思想上接近于数学运算,根据某种方式,根据方式得出的结果. 3.面向对象编程:一种编程方式,需要使用" ...

  5. Python的平凡之路(13)

    一.Python的paramiko模块介绍 Python 的paramiko模块,该模块和SSH用于连接远程服务器并执行相关操作 SSH client 用于连接远程服务器并执行基本命令 基于用户名和密 ...

  6. python学习心得第一章

    初始python 1什么是程序 计算机程序是一组执行某种动作的的指令.和那些电路.芯片.显卡.硬盘等不同,它不是计算机本身可以触摸的部分,而是隐藏在背后运行在硬件上面的东西.程序就是一系列告诉没有知觉 ...

  7. Python之路【第七篇续】:I/O多路复用

    回顾原生Socket 一.Socket起源: socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,对于文件用[打开][读写][关闭]模式来操作. socket就是该模式的 ...

  8. Python之路【第六篇】:面向对象编程相关

    判断类与对象关系 isinstance(obj, cls)  判断对象obj是否是由cls类创建的 #!/usr/bin/env python #-*- coding:utf-8 -*- class ...

  9. Python之路【第四篇补充】:面向对象初识和总结回顾

    面向过程的编程 面向过程:根据业务逻辑从上到下写垒代码! 例子: 需求一.有一个程序需要做身份认证: 用户名有个字典: #定义一个用户名信息字典 user_info = { "zhangsa ...

随机推荐

  1. gitlab 提交

    gitlab 提交 Git global setup git config --global user.name "lial" git config --global user.e ...

  2. 全面认识nslookup命令及子命令

  3. java-反编译工具(luyten)

    下载地址:https://github.com/deathmarine/Luyten

  4. (一)如何理解java面向对象编程

    哲学中,事物总是螺旋式上升,波浪式前进.因而编程也逐渐向人类更容易理解的方向前进,多年来人们苦苦追求的编程境界 : 高扩展性(extensibility),高复用性(reuseable).java语言 ...

  5. Rancher 2.3.2 Stable!Istio UI已经GA!生产可用!

    2019年10月9日,Rancher 2.3正式发布,这是Rancher Labs迄今为止最重要的产品版本.Rancher 2.3是业界首个GA支持Windows容器的Kubernetes管理平台,并 ...

  6. SoapUI 关联之Property Transfer、JSONPath、Xpath

    进行接口功能测试过程中,经常会碰到,需要获取到上一个请求响应结果中数据,传递到下一个请求中来使用.在soapui中我们通过Property Transfer来实现. 1.Property Transf ...

  7. django-模板之for empty(十一)

    当值为空时,会调用empty下面的值

  8. Dubbo 优雅停机演进之路

    一.前言 在 『ShutdownHook- Java 优雅停机解决方案』 一文中我们聊到了 Java 实现优雅停机原理.接下来我们就跟根据上面知识点,深入 Dubbo 内部,去了解一下 Dubbo 如 ...

  9. 痞子衡嵌入式:飞思卡尔i.MX RTyyyy系列MCU硬件那些事(2.2)- 在串行NOR Flash XIP调试原理

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RTyyyy系列EVK在串行NOR Flash调试的原理. 本文是i.MXRT硬件那些事系列第二篇的续集,在第二篇首集 ...

  10. 重新认识MySQL中的COUNT语句

    在数据库的增删改查操作中,使用最频繁的就是查询操作. 而在所有查询操作中,统计数量操作更是经常被用到. 关于数据库中行数统计,无论是MySQL还是Oracle亦或者是SqlServer,都有一个函数可 ...