作业一要求:

1 输入用户名密码

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

3 输错三次后锁定

  1. import os
  2.  
  3. #生成保存用户信息的字典
  4. d_userinfo = {}
  5. #保存用户登录字典
  6. input_login_username = {}
  7. #保存锁定用户列表
  8. lock_user = []
  9.  
  10. #从userinfo中获取用户登录信息:用户名称、口令
  11. userinfo_file = open("userinfo", "r")
  12. #将用户信息添加到d_userinfo字典中
  13. for line in userinfo_file.readlines():
  14. _userinfo = line.replace("\n","").split("|");
  15. #将用户添加到字典中
  16. d_userinfo.update({_userinfo[0]:_userinfo[1]})
  17. #关闭文件
  18. userinfo_file.close()
  19.  
  20. #获取锁定用户
  21. lockinfo = open("lockinfo", "r")
  22. #将锁定用户添加到锁定列表中
  23. for line in lockinfo.readlines():
  24. lock_user.append(line.replace("\n", ""))
  25. lockinfo.close()
  26.  
  27. #用户开始登录
  28. input_count = 0
  29. i_username = ""
  30. while input_count < 3:
  31. input_count += 1
  32. i_username = input("Please enter your name:")
  33. i_passowrd = input("Please enter you password:")
  34. #判断用户输入是否为空
  35. if len(i_username) == 0 :
  36. print("用户名称不能为空,请输入用户名称!")
  37. continue
  38. #判断用户是否已锁定
  39. if i_username in lock_user:
  40. print("用户已锁定!")
  41. break
  42. #先判断用户字典表中是否有该用户
  43. if d_userinfo.get(i_username):
  44. #判断用户口令是否一致
  45. if i_passowrd==d_userinfo.get(i_username):
  46. print("Hello {name}!".format(name=i_username))
  47. break
  48. else :
  49. #说明用户输入的用户名称正确,但口令不对
  50. print("用户口令错误!")
  51. else :
  52. #说明用户输入的用户名称不正确
  53. print("用户名称或口令输入错误!")
  54.  
  55. #将登录输入的用户名称保存到输入登录用户字典中
  56. input_login_username.setdefault(i_username, i_username)
  57. else :
  58. if len(input_login_username) == 1 :
  59. # 锁定用户
  60. print("锁定用户")
  61. #"a"表示追加方式写
  62. fo = open("lockinfo", "a")
  63. fo.write(i_username+"\n")
  64. fo.close()
  65. else :
  66. #输入三次用户名称或口令都不正确,退出登录
  67. 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. boost::thread_specific_ptr

    thread_specific_ptr代表了一个全局的变量,而在每个线程中都各自new一个线程本地的对象交给它进行管理. 线程之间就不会因为访问同一全局对象而引起资源竞争导致性能下降. 而线程结束时, ...

  2. HTML5+WebGL 的加油站 3D 可视化监控

    前言 随着数字化,工业互联网,物联网的发展,我国加油站正向有人值守,无人操作,远程控制的方向发展,传统的人工巡查方式逐渐转变为以自动化控制为主的在线监控方式,即采用数据采集与监控系统 SCADA.SC ...

  3. Netty源码分析之ChannelPipeline(一)—ChannelPipeline的构造与初始化

    Netty中ChannelPipeline实际上类似与一条数据管道,负责传递Channel中读取的消息,它本质上是基于责任链模式的设计与实现,无论是IO事件的拦截器,还是用户自定义的ChannelHa ...

  4. JVM(2) Java内存溢出异常

    在Java虚拟机运行时数据区中,除了程序计数器之外,虚拟机栈.本地方法栈.方法区和Java堆都有发生OutOfMemoryError(简称OOM)异常的可能. 一.Java堆溢出 Java堆用于存储对 ...

  5. Python进阶函数

    一.函数的动态参数 之前我们说过了传参, 如果我们需要给一个函数传参, 而参数又是不确定的. 或者我给一个函数传很多参数, 我的形参就要写很多, 很麻烦, 怎么办呢. 我们可以考虑使用动态参数. 动态 ...

  6. CSPS模拟 100

    我又挂分了T_T 这么吉利的数字..本来想考的好一点的 T1 没加当前弧优化(其实也不会),若志了 各种低错连篇而且没想到点不联通..没有奇度点就直接从1开始搜了 于是喜提70(犯了这两个若志错误应该 ...

  7. 一个帮助理清思路的神奇工具--debug

    今天在回顾复习之前的知识的时候,对嵌套循环犯了迷糊,于是我使用了debug这个方法,不仅让我弄清楚嵌套循环输出结果是如何得来,也让我明白了具体流程. 在这里,IDE我使用的是PyCharm,自然用它自 ...

  8. 网页文件打包成.exe可执行文件

    网页文件不止可以通过浏览器打开,也可以通过打包程序打包成.exe桌面可执行程序,这样写的网页文件就可以像桌面应用一样打开了.方法如下: 工具:NW.js.Enigma Virtual Box.资源编辑 ...

  9. javascript中判断数据类型

    编写javascript代码的时候常常要判断变量,字面量的类型,可以用typeof,instanceof,Array.isArray(),等方法,究竟哪一种最方便,最实用,最省心呢?本问探讨这个问题. ...

  10. 5种常见Bean映射工具的性能比对

    本文由 JavaGuide 翻译自 https://www.baeldung.com/java-performance-mapping-frameworks .转载请注明原文地址以及翻译作者. 1. ...