作业一:

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

python3代码 :

# -*- coding:utf-8 -*-
input_name = input("Please input your user name : ").strip()
user_lockfile = open("user_lockfile.txt","r+")
user_file = open("user_file.txt")
user_list = user_file.readlines() for i in range(3):
input_passwd = input("Please input your password : ").strip()
#查找被锁用户列表判断是否被锁住
if input_name in [locked_user.rstrip() for locked_user in user_lockfile.readlines()]:
print("Sorry, your account is locked!")
user_file.close()
user_lockfile.close()
exit(1)
else: #没有被锁住,查找用户列表
if input_name not in [user_record.split()[0] for user_record in user_list]:
print("Sorry, your account doesn't exist!")
user_file.close()
user_lockfile.close()
exit(2)
else: #用户存在,判断密码是否正确,正确跳出循环
input_record = input_name + ' ' + input_passwd
if input_record in [user_record.rstrip() for user_record in user_list]:
print("Logging in...")
user_file.close()
user_lockfile.close()
exit(0)
else:#密码不正确,判断错误次数,错误三次(i=2)将用户锁住
if i == 2:
user_lockfile.write(input_name + "\n")
print("Sorry, you're locked!")
user_file.close()
user_lockfile.close()
exit(3)
else:#剩余机会数 2-i
chance = 2 - i
print("Wrong password! %s chances left!" % chance)

userfile:

wayne 123
root shroot123

user_lockfile:

kevin
james
root

作业二:

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

python3代码:

 # -*- coding:utf-8 -*-
import time
import os DICT_PRO = {"北京":["大兴区","朝阳区","海淀区","东城区","西城区","丰台区","通州区"],
"上海":["静安区","徐汇区","浦东新区","虹口区","普陀区","长宁区","宝山区","嘉定区","闵行区"],
"山东省":["烟台市","济南市","青岛市"],
"辽宁省":["大连市","沈阳市"],
"香港":None,
"澳门":None,
"台湾":["台北市"]}
DICT_CIT = {"烟台市":["莱山区","芝罘区","福山区","龙口市"],
"青岛市":["李沧区","台东区","崂山区"],
"济南市":["市中区","天桥区","历城区"],
"大连市":["中山区","甘井子区","沙河口区","高新园区"],
"沈阳市":["皇姑区","大东区","和平区","铁西区"]} #将输入的数字转化成整数形式
def input_verify(choice):
if str.isdigit(choice):
choice = int(choice)
return choice #输出框架
def framework_show(province='', city='', district=''):
os.system('cls') #清屏
print('''
######################################################
* *
* 欢迎进入省市区查询系统 *
* *
######################################################
* *
* 省份 : %s 城市 : %s 区 : %s
* *
######################################################
''' % (province, city, district)) #展示欢迎界面
def welcome_show(province='', city='', district=''):
print('''
######################################################
* *
* Welcome to %s %s %s
* *
######################################################
''' % (province, city, district)) #从省份字典,提取省份以及直辖市展示
def province_show():
global DICT_PRO
global P_NAME
global C_NAME
global D_NAME
global C_FLAG province_dict = {}
#遍历省份字典,提取省份并添加编号输出展示
for (n, p) in enumerate(DICT_PRO, 1):
province_dict[n] = p
print('%d.%s' % (n, p) + '\t', end='')
if(n % 4 == 0):
print()
print('\n================================================================')
print('q : Exit')
province_input = input('请输入省份编号或省份名称 : ')
province_input = input_verify(province_input)
if province_input == 'q':
exit(0)
elif province_input in province_dict.keys(): #输入的是数字编号,对全局省份赋值
P_NAME = province_dict[province_input]
elif province_input in province_dict.values():#输入的是省份名称
P_NAME = province_input
else:
P_NAME = '' #其他输入,提示输入错误
print("Wrong Input!")
time.sleep(2) while P_NAME:
framework_show(P_NAME, C_NAME, D_NAME) #调用框架
if type(DICT_PRO[P_NAME]) is list: #若省份后有城市列表,调用城市展示函数
city_show(P_NAME)
if C_FLAG == 'b':
break
else: #若省份后无城市,直接调用展示函数
welcome_show(P_NAME)
time.sleep(5)
P_NAME = ''
break #传入省份,展示城市列表
def city_show(province):
global DICT_PRO
global DICT_CIT
global P_NAME
global C_NAME
global D_NAME
global C_FLAG
global D_FLAG city_list = DICT_PRO[province]
city_dict = {}
for (n, c) in enumerate(city_list, 1):
city_dict[n] = c
print('%d.%s' % (n, c) + '\t', end='')
if (n % 4 == 0):
print()
print('\n================================================================')
print('q : Exit b : Back')
city_input = input('请输入城市编号或城市名称:')
city_input = input_verify(city_input) if city_input == 'q':
exit(0)
elif city_input == 'b':
(P_NAME, C_NAME, C_FLAG) = ('', '', 'b')
return
elif city_input in city_dict.keys():
city_name = city_dict[city_input]
(P_NAME, C_NAME, C_FLAG) = (province, city_name, '')
elif city_input in city_dict.values():
city_name = city_input
(P_NAME, C_NAME, C_FLAG) = (province, city_name, '')
else:
print("Wrong Input!")
C_NAME = ''
time.sleep(2) while C_NAME:
framework_show(P_NAME, C_NAME, D_NAME)
if C_NAME in DICT_CIT.keys(): #若所选城市在城市及区字典中有记录
district_show(P_NAME, C_NAME) #调用城区展示函数展示城区
if D_FLAG == 'b':
break
else:
welcome_show(P_NAME, C_NAME) #若所选城市在城区字典中无记录,调用展示函数
time.sleep(5)
C_NAME = '' #展示后将城市清空,回到选择城市界面
break #传入省份和城市,展示相关地区
def district_show(province, city):
global DICT_PRO
global DICT_CIT
global P_NAME
global C_NAME
global D_NAME
global D_FLAG district_dict = {}
district_list = DICT_CIT[city]
for (n, d) in enumerate(district_list, 1):
district_dict[n] = d
print('%d.%s' % (n, d) + '\t', end='')
if (n % 4 == 0):
print()
print('\n================================================================')
print('q : Exit b : Back') district_input = input('请输入区名或编号:')
district_input = input_verify(district_input) if district_input == 'q':
exit(0)
elif district_input == 'b':
(P_NAME, C_NAME, D_NAME, D_FLAG) = (province, '', '', 'b')
return
elif district_input in district_dict.keys():
district_name = district_dict[district_input]
(P_NAME, C_NAME, D_NAME, D_FLAG) = (province, city, district_name,'')
elif district_input in district_dict.values():
district_name = district_input
(P_NAME, C_NAME, D_NAME, D_FLAG) = (province, city, district_name,'')
else:
(P_NAME, C_NAME, D_NAME, D_FLAG) = (province, city, '', '')
district_name = ''
print("Wrong Input!")
time.sleep(2) if district_name: #若选中了城区,调用展示函数
welcome_show(P_NAME, C_NAME, D_NAME)
time.sleep(5)
D_NAME = '' #展示后将城区清空,将回到城区选择界面 P_NAME='' #省份全局变量
C_NAME='' #城市全局变量
D_NAME='' #城区全局变量
C_FLAG='' #城市选择页面输入b选项
D_FLAG='' #城区选择页面输入b选项 while True:
framework_show(P_NAME, C_NAME, D_NAME)
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. 针对通达OA20170729集团版设计门户管理解决方案的具体实例

    随着企业信息化建设的深入,应用系统数量不断增加,应用功能不断丰富,数据信息也在呈几何级数增长,在支撑企业正常工作运转的同时,也衍生出许多新的问题: 通达信科根据自身从业多年的行业实践经验,勇于打破传统 ...

  2. spring mvc:日志对象logger的复用

    在采用Spring mvc+org.slf4j.Logger开发项目时,发现几乎每个controller或者manager都有的一个标配: private final static Logger LO ...

  3. 【转载】js常用方法和片段

    在网上看了不少js方法的总结没,自己也尝试总结过,这篇只迄今为止觉得最清楚的,尤其是call和apply的方法总结,很到位!! 1.javascript删除元素节点 IE中有这样一个方法:remove ...

  4. CGI + FastCGI(PHP-FPM)联系和区别的图解 + 注释

    一.背景 参考了几篇文章,总结成图解 + 注释方便以后查阅. 参考资料: 1.https://www.zhihu.com/question/19582041 2.https://segmentfaul ...

  5. vs 2015 rdlc报表绑定datagridview中的数据

    这几天一直想要实现rdlc报表绑定datagridview中的数据,始终在虚拟表向rdlc报表绑定这一步上出错.今天从下午4点到七点四十一直在尝试.最终还是实现了,最然并不知所以然,这个问题还是以后在 ...

  6. web程序员标准环境之DreamWeaver【…

    Adobe Dreamweaver,简称"DW",中文名称 "梦想编织者",是美国MACROMEDIA公司开发的集网页制作和管理网站于一身的所见即所得网页编辑器 ...

  7. 转:【Java并发编程】之十九:并发新特性—Executor框架与线程池(含代码)

      Executor框架简介 在Java5之后,并发编程引入了一堆新的启动.调度和管理线程的API.Executor框架便是Java 5中引入的,其内部使用了线程池机制,它在java.util.coc ...

  8. 团队作业8——Beta 阶段冲刺4th day

    团队作业8--Beta 阶段冲刺4rd day 一.当天站立式会议   二.每个人的工作 (1)昨天已完成的工作(具体在表格中) 添加了支付功能,并且对支付功能进行了测试 (2)今天计划完成的工作(具 ...

  9. 【Beta】Daily Scrum Meeting——Day1

    站立式会议照片 1.本次会议为第一次Meeting会议: 2.本次会议在上午大课间09:40,在陆大楼召开,本次会议为30分钟讨论今天要完成的任务以及接下来的任务安排. 燃尽图 每个人的工作分配 成 ...

  10. 201521123057 《Java程序设计》 第6周学习总结

    1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 2. 书面作业 1.clone方法 1.1 Object对 ...