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 ...
随机推荐
- openssl生成密钥/证书
一.公钥/私钥/签名/验证签名/加密/解密/非对称加密 对称加密:用同一个密码 加密/解密 文件. 非对称加密:加密用的一个密码,解密用另外一组密码. 加密解密:公钥加密数据,然后私钥解密. 公钥 ...
- 安装Go语言及搭建Go语言开发环境
一步一步,从零搭建Go语言开发环境. 安装Go语言及搭建Go语言开发环境 下载 下载地址 Go官网下载地址:https://golang.org/dl/ Go官方镜像站(推荐):https://gol ...
- HDU 3873 Invade the Mars(带限制条件的Dijkstra)
题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=3873 思路: 军队可以先等待在城市外面,等保护该城市的城市都被攻破后,直接进城(即进城不用耗费时间). ...
- Leetcode(6)Z字形变换
Leetcode(6)Z字形变换 [题目表述]: 将一个给定字符串根据给定的行数,以从上往下.从左到右进行 Z 字形排列. 比如输入字符串为 "LEETCODEISHIRING" ...
- Unity调用Android
1.Unity调用Android 根据unity用户手册,unity可以采用native code(c/c++),但是也提供了C#调用方法,本文对此进行简单讲解. 2.Unity获取android类 ...
- 按钮组件.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- docker 概念简介、简单入门
1.docker 简介 Docker 是一个开源项目,这个项目旨在通过把应用程序打包为可移植的.自给自足的容器(引用语) DocKer一次构建可放在任何地方就可以运行,不需要进行任何改变DocKer ...
- 在虚拟机上的关于Apache(阿帕奇)(2)开启个人用户主页功能
首先下载httpd服务 在这里我们主要谈一谈个人主页功能分为不加密和加密两种 不加密 我们先来建立几个用户,使用命令:useradd longshisan 使用命令: Passwd longs ...
- RESTful基本概念
文章目录 01 前言 02 RESTful的来源 03 RESTful6大原则 1. C-S架构 2. 无状态 3.统一的接口 4.一致的数据格式 4.系统分层 5.可缓存 6.按需编码.可定制代码( ...
- 干货 Elasticsearch 知识点整理二
目录 root object mate-field 元数据字段 mapping-parameters 动态mapping(dynamic mapping) 核心的数据类型 精确匹配与全文检索 精确匹配 ...