python day 1 homework 1
作业一要求:
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的更多相关文章
- python day 1 homework 2
多级菜单 1 三级菜单 2 可依次选择进入各子菜单 3 所需新知识点,列表,字典 province_info = {":{"name":"黑龙江", ...
- Python Homework 001
1 #!/usr/bin/env python 2 #-*- coding:utf-8 -*- 3 4 import getpass 5 name = "xilong" 6 pas ...
- 【Python】Coding the Matrix:Week 5: Dimension Homework 5
这一周的作业,刚压线写完.Problem3 没有写,不想证明了.从Problem 9 开始一直到最后难度都挺大的,我是在论坛上看过了别人的讨论才写出来的,挣扎了很久. Problem 9在给定的基上分 ...
- python面向对象一
1.1三种编程方法论 1.面向过程:把复杂的任务一步一步分解成简单的任务. 2.函数式编程:思想上接近于数学运算,根据某种方式,根据方式得出的结果. 3.面向对象编程:一种编程方式,需要使用" ...
- Python的平凡之路(13)
一.Python的paramiko模块介绍 Python 的paramiko模块,该模块和SSH用于连接远程服务器并执行相关操作 SSH client 用于连接远程服务器并执行基本命令 基于用户名和密 ...
- python学习心得第一章
初始python 1什么是程序 计算机程序是一组执行某种动作的的指令.和那些电路.芯片.显卡.硬盘等不同,它不是计算机本身可以触摸的部分,而是隐藏在背后运行在硬件上面的东西.程序就是一系列告诉没有知觉 ...
- Python之路【第七篇续】:I/O多路复用
回顾原生Socket 一.Socket起源: socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,对于文件用[打开][读写][关闭]模式来操作. socket就是该模式的 ...
- Python之路【第六篇】:面向对象编程相关
判断类与对象关系 isinstance(obj, cls) 判断对象obj是否是由cls类创建的 #!/usr/bin/env python #-*- coding:utf-8 -*- class ...
- Python之路【第四篇补充】:面向对象初识和总结回顾
面向过程的编程 面向过程:根据业务逻辑从上到下写垒代码! 例子: 需求一.有一个程序需要做身份认证: 用户名有个字典: #定义一个用户名信息字典 user_info = { "zhangsa ...
随机推荐
- gitlab 提交
gitlab 提交 Git global setup git config --global user.name "lial" git config --global user.e ...
- 全面认识nslookup命令及子命令
- java-反编译工具(luyten)
下载地址:https://github.com/deathmarine/Luyten
- (一)如何理解java面向对象编程
哲学中,事物总是螺旋式上升,波浪式前进.因而编程也逐渐向人类更容易理解的方向前进,多年来人们苦苦追求的编程境界 : 高扩展性(extensibility),高复用性(reuseable).java语言 ...
- Rancher 2.3.2 Stable!Istio UI已经GA!生产可用!
2019年10月9日,Rancher 2.3正式发布,这是Rancher Labs迄今为止最重要的产品版本.Rancher 2.3是业界首个GA支持Windows容器的Kubernetes管理平台,并 ...
- SoapUI 关联之Property Transfer、JSONPath、Xpath
进行接口功能测试过程中,经常会碰到,需要获取到上一个请求响应结果中数据,传递到下一个请求中来使用.在soapui中我们通过Property Transfer来实现. 1.Property Transf ...
- django-模板之for empty(十一)
当值为空时,会调用empty下面的值
- Dubbo 优雅停机演进之路
一.前言 在 『ShutdownHook- Java 优雅停机解决方案』 一文中我们聊到了 Java 实现优雅停机原理.接下来我们就跟根据上面知识点,深入 Dubbo 内部,去了解一下 Dubbo 如 ...
- 痞子衡嵌入式:飞思卡尔i.MX RTyyyy系列MCU硬件那些事(2.2)- 在串行NOR Flash XIP调试原理
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RTyyyy系列EVK在串行NOR Flash调试的原理. 本文是i.MXRT硬件那些事系列第二篇的续集,在第二篇首集 ...
- 重新认识MySQL中的COUNT语句
在数据库的增删改查操作中,使用最频繁的就是查询操作. 而在所有查询操作中,统计数量操作更是经常被用到. 关于数据库中行数统计,无论是MySQL还是Oracle亦或者是SqlServer,都有一个函数可 ...