作业一:

  • 输入用户名密码
  • 认证成功后显示欢迎信息
  • 输错三次后锁定

python3代码 :

  1. # -*- coding:utf-8 -*-
  2. input_name = input("Please input your user name : ").strip()
  3. user_lockfile = open("user_lockfile.txt","r+")
  4. user_file = open("user_file.txt")
  5. user_list = user_file.readlines()
  6.  
  7. for i in range(3):
  8. input_passwd = input("Please input your password : ").strip()
  9. #查找被锁用户列表判断是否被锁住
  10. if input_name in [locked_user.rstrip() for locked_user in user_lockfile.readlines()]:
  11. print("Sorry, your account is locked!")
  12. user_file.close()
  13. user_lockfile.close()
  14. exit(1)
  15. else: #没有被锁住,查找用户列表
  16. if input_name not in [user_record.split()[0] for user_record in user_list]:
  17. print("Sorry, your account doesn't exist!")
  18. user_file.close()
  19. user_lockfile.close()
  20. exit(2)
  21. else: #用户存在,判断密码是否正确,正确跳出循环
  22. input_record = input_name + ' ' + input_passwd
  23. if input_record in [user_record.rstrip() for user_record in user_list]:
  24. print("Logging in...")
  25. user_file.close()
  26. user_lockfile.close()
  27. exit(0)
  28. else:#密码不正确,判断错误次数,错误三次(i=2)将用户锁住
  29. if i == 2:
  30. user_lockfile.write(input_name + "\n")
  31. print("Sorry, you're locked!")
  32. user_file.close()
  33. user_lockfile.close()
  34. exit(3)
  35. else:#剩余机会数 2-i
  36. chance = 2 - i
  37. print("Wrong password! %s chances left!" % chance)

userfile:

  1. wayne 123
  2. root shroot123

user_lockfile:

  1. kevin
  2. james
    root

作业二:

  • 三级菜单
  • 可以此选择进入各子菜单
  • 所需知识点:列表、字典

python3代码:

  1. # -*- coding:utf-8 -*-
  2. import time
  3. import os
  4.  
  5. DICT_PRO = {"北京":["大兴区","朝阳区","海淀区","东城区","西城区","丰台区","通州区"],
  6. "上海":["静安区","徐汇区","浦东新区","虹口区","普陀区","长宁区","宝山区","嘉定区","闵行区"],
  7. "山东省":["烟台市","济南市","青岛市"],
  8. "辽宁省":["大连市","沈阳市"],
  9. "香港":None,
  10. "澳门":None,
  11. "台湾":["台北市"]}
  12. DICT_CIT = {"烟台市":["莱山区","芝罘区","福山区","龙口市"],
  13. "青岛市":["李沧区","台东区","崂山区"],
  14. "济南市":["市中区","天桥区","历城区"],
  15. "大连市":["中山区","甘井子区","沙河口区","高新园区"],
  16. "沈阳市":["皇姑区","大东区","和平区","铁西区"]}
  17.  
  18. #将输入的数字转化成整数形式
  19. def input_verify(choice):
  20. if str.isdigit(choice):
  21. choice = int(choice)
  22. return choice
  23.  
  24. #输出框架
  25. def framework_show(province='', city='', district=''):
  26. os.system('cls') #清屏
  27. print('''
  28. ######################################################
  29. * *
  30. * 欢迎进入省市区查询系统 *
  31. * *
  32. ######################################################
  33. * *
  34. * 省份 : %s 城市 : %s 区 : %s
  35. * *
  36. ######################################################
  37. ''' % (province, city, district))
  38.  
  39. #展示欢迎界面
  40. def welcome_show(province='', city='', district=''):
  41. print('''
  42. ######################################################
  43. * *
  44. * Welcome to %s %s %s
  45. * *
  46. ######################################################
  47. ''' % (province, city, district))
  48.  
  49. #从省份字典,提取省份以及直辖市展示
  50. def province_show():
  51. global DICT_PRO
  52. global P_NAME
  53. global C_NAME
  54. global D_NAME
  55. global C_FLAG
  56.  
  57. province_dict = {}
  58. #遍历省份字典,提取省份并添加编号输出展示
  59. for (n, p) in enumerate(DICT_PRO, 1):
  60. province_dict[n] = p
  61. print('%d.%s' % (n, p) + '\t', end='')
  62. if(n % 4 == 0):
  63. print()
  64. print('\n================================================================')
  65. print('q : Exit')
  66. province_input = input('请输入省份编号或省份名称 : ')
  67. province_input = input_verify(province_input)
  68. if province_input == 'q':
  69. exit(0)
  70. elif province_input in province_dict.keys(): #输入的是数字编号,对全局省份赋值
  71. P_NAME = province_dict[province_input]
  72. elif province_input in province_dict.values():#输入的是省份名称
  73. P_NAME = province_input
  74. else:
  75. P_NAME = '' #其他输入,提示输入错误
  76. print("Wrong Input!")
  77. time.sleep(2)
  78.  
  79. while P_NAME:
  80. framework_show(P_NAME, C_NAME, D_NAME) #调用框架
  81. if type(DICT_PRO[P_NAME]) is list: #若省份后有城市列表,调用城市展示函数
  82. city_show(P_NAME)
  83. if C_FLAG == 'b':
  84. break
  85. else: #若省份后无城市,直接调用展示函数
  86. welcome_show(P_NAME)
  87. time.sleep(5)
  88. P_NAME = ''
  89. break
  90.  
  91. #传入省份,展示城市列表
  92. def city_show(province):
  93. global DICT_PRO
  94. global DICT_CIT
  95. global P_NAME
  96. global C_NAME
  97. global D_NAME
  98. global C_FLAG
  99. global D_FLAG
  100.  
  101. city_list = DICT_PRO[province]
  102. city_dict = {}
  103. for (n, c) in enumerate(city_list, 1):
  104. city_dict[n] = c
  105. print('%d.%s' % (n, c) + '\t', end='')
  106. if (n % 4 == 0):
  107. print()
  108. print('\n================================================================')
  109. print('q : Exit b : Back')
  110. city_input = input('请输入城市编号或城市名称:')
  111. city_input = input_verify(city_input)
  112.  
  113. if city_input == 'q':
  114. exit(0)
  115. elif city_input == 'b':
  116. (P_NAME, C_NAME, C_FLAG) = ('', '', 'b')
  117. return
  118. elif city_input in city_dict.keys():
  119. city_name = city_dict[city_input]
  120. (P_NAME, C_NAME, C_FLAG) = (province, city_name, '')
  121. elif city_input in city_dict.values():
  122. city_name = city_input
  123. (P_NAME, C_NAME, C_FLAG) = (province, city_name, '')
  124. else:
  125. print("Wrong Input!")
  126. C_NAME = ''
  127. time.sleep(2)
  128.  
  129. while C_NAME:
  130. framework_show(P_NAME, C_NAME, D_NAME)
  131. if C_NAME in DICT_CIT.keys(): #若所选城市在城市及区字典中有记录
  132. district_show(P_NAME, C_NAME) #调用城区展示函数展示城区
  133. if D_FLAG == 'b':
  134. break
  135. else:
  136. welcome_show(P_NAME, C_NAME) #若所选城市在城区字典中无记录,调用展示函数
  137. time.sleep(5)
  138. C_NAME = '' #展示后将城市清空,回到选择城市界面
  139. break
  140.  
  141. #传入省份和城市,展示相关地区
  142. def district_show(province, city):
  143. global DICT_PRO
  144. global DICT_CIT
  145. global P_NAME
  146. global C_NAME
  147. global D_NAME
  148. global D_FLAG
  149.  
  150. district_dict = {}
  151. district_list = DICT_CIT[city]
  152. for (n, d) in enumerate(district_list, 1):
  153. district_dict[n] = d
  154. print('%d.%s' % (n, d) + '\t', end='')
  155. if (n % 4 == 0):
  156. print()
  157. print('\n================================================================')
  158. print('q : Exit b : Back')
  159.  
  160. district_input = input('请输入区名或编号:')
  161. district_input = input_verify(district_input)
  162.  
  163. if district_input == 'q':
  164. exit(0)
  165. elif district_input == 'b':
  166. (P_NAME, C_NAME, D_NAME, D_FLAG) = (province, '', '', 'b')
  167. return
  168. elif district_input in district_dict.keys():
  169. district_name = district_dict[district_input]
  170. (P_NAME, C_NAME, D_NAME, D_FLAG) = (province, city, district_name,'')
  171. elif district_input in district_dict.values():
  172. district_name = district_input
  173. (P_NAME, C_NAME, D_NAME, D_FLAG) = (province, city, district_name,'')
  174. else:
  175. (P_NAME, C_NAME, D_NAME, D_FLAG) = (province, city, '', '')
  176. district_name = ''
  177. print("Wrong Input!")
  178. time.sleep(2)
  179.  
  180. if district_name: #若选中了城区,调用展示函数
  181. welcome_show(P_NAME, C_NAME, D_NAME)
  182. time.sleep(5)
  183. D_NAME = '' #展示后将城区清空,将回到城区选择界面
  184.  
  185. P_NAME='' #省份全局变量
  186. C_NAME='' #城市全局变量
  187. D_NAME='' #城区全局变量
  188. C_FLAG='' #城市选择页面输入b选项
  189. D_FLAG='' #城区选择页面输入b选项
  190.  
  191. while True:
  192. framework_show(P_NAME, C_NAME, D_NAME)
  193. province_show()

Python s12 Day1 笔记及作业的更多相关文章

  1. Python s12 Day2 笔记及作业

    1. 元组的元素不可修改,但元组的元素的元素可以被修改. 2. name="eric" print(name.center(20, "*") 3. list=[ ...

  2. Python s12 Day3 笔记及作业

    1. Set集合 old_dict = { "#1":{ 'hostname':'c1', 'cpu_count':2, 'mem_capicity':16}, "#2& ...

  3. 【原】Learning Spark (Python版) 学习笔记(三)----工作原理、调优与Spark SQL

    周末的任务是更新Learning Spark系列第三篇,以为自己写不完了,但为了改正拖延症,还是得完成给自己定的任务啊 = =.这三章主要讲Spark的运行过程(本地+集群),性能调优以及Spark ...

  4. c#实例化继承类,必须对被继承类的程序集做引用 .net core Redis分布式缓存客户端实现逻辑分析及示例demo 数据库笔记之索引和事务 centos 7下安装python 3.6笔记 你大波哥~ C#开源框架(转载) JSON C# Class Generator ---由json字符串生成C#实体类的工具

    c#实例化继承类,必须对被继承类的程序集做引用   0x00 问题 类型“Model.NewModel”在未被引用的程序集中定义.必须添加对程序集“Model, Version=1.0.0.0, Cu ...

  5. 《简明python教程》笔记一

    读<简明Python教程>笔记: 本书的官方网站是www.byteofpython.info  安装就不说了,网上很多,这里就记录下我在安装时的问题,首先到python官网下载,选好安装路 ...

  6. python 正则使用笔记

    python正则使用笔记 def remove_br(content): """去除两边换行符""" content = content.r ...

  7. 【Python】:简单爬虫作业

    使用Python编写的图片爬虫作业: #coding=utf-8 import urllib import re def getPage(url): #urllib.urlopen(url[, dat ...

  8. python s12 day2

    python s12 day2   入门知识拾遗 http://www.cnblogs.com/wupeiqi/articles/4906230.html 基本数据类型 注:查看对象相关成员 var, ...

  9. python s12 day3

    python s12 day3   深浅拷贝 对于 数字 和 字符串 而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...

随机推荐

  1. ASP.NET Core MVC I/O编程模型

    1. ASP.NET Core MVC I/O编程模型 1.1. I/O编程模型浅析 1.2. 同步阻塞I/O 1.3. 同步非阻塞I/O 1.4. 异步I/O 1.5. 总结 1.1. I/O编程模 ...

  2. 一、Solr的相关概念了解

    1.1. 什么是Solr Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器.Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置.可扩展 ...

  3. .Netcore之日志组件Log4net、Nlog性能比较

    转载请注明出处http://www.cnblogs.com/supernebula/p/7506993.html .Netcore之Log4net.Nlog性能比较 最近在写一个开源.netcore ...

  4. javaScript数组去重方法

    在JAvascript平时项目开发中经常会用到数组去重的操作.这时候就要用到JS数组去重的方法了. demo1: 第一种:JS数组去重操作方法是利用遍历原数组,利用数组的indexOf()方法来来判断 ...

  5. JS学习四(BOM DOM)

    BOM                Screen对象 console.log(window.width);//屏幕宽度 console.log(window.height);//屏幕高度 conso ...

  6. 【2017集美大学1412软工实践_助教博客】团队作业6——展示博客(Alpha版本)

    题目 团队作业6: http://www.cnblogs.com/happyzm/p/6791211.html 团队成绩 团队成员简介 项目地址 项目目标,包括典型用户.功能描述.预期用户数量 如何满 ...

  7. 201521123039 《java程序设计》第七周学习总结

    1. 本周学习总结 2. 书面作业 ArrayList代码分析 1.1 解释ArrayList的contains源代码 答:ArrayList的Contains的源码如上图所示,如果o为null,那么 ...

  8. 201521123008《Java程序设计》第七周实验总结

    1.本周学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 2. 书面作业 1.ArrayList代码分析 1.1 解释ArrayList的contains源代码 public bool ...

  9. 201521123080《Java程序设计》第2周学习总结

    1.本周学习总结 a.学习了如何建立远程仓库和本地仓库并建立连接. b.学习了一些基础语法. 2.书面作业 Q1.使用Eclipse关联jdk源代码,并查看String对象的源代码(截图)?分析Str ...

  10. 201521123065《java程序设计》第14周学习总结

    1. 本周学习总结 1.大部分情况下使用的数据库是关系型的数据库,使用表存储数据: 2.关系型数据库可以通过唯一的主键查找记录,也可以通过多个信息确定主键: 3.Mysql操作:显示-show dat ...