Python s12 Day1 笔记及作业
作业一:
- 输入用户名密码
- 认证成功后显示欢迎信息
- 输错三次后锁定
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 笔记及作业的更多相关文章
- Python s12 Day2 笔记及作业
1. 元组的元素不可修改,但元组的元素的元素可以被修改. 2. name="eric" print(name.center(20, "*") 3. list=[ ...
- Python s12 Day3 笔记及作业
1. Set集合 old_dict = { "#1":{ 'hostname':'c1', 'cpu_count':2, 'mem_capicity':16}, "#2& ...
- 【原】Learning Spark (Python版) 学习笔记(三)----工作原理、调优与Spark SQL
周末的任务是更新Learning Spark系列第三篇,以为自己写不完了,但为了改正拖延症,还是得完成给自己定的任务啊 = =.这三章主要讲Spark的运行过程(本地+集群),性能调优以及Spark ...
- 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 ...
- 《简明python教程》笔记一
读<简明Python教程>笔记: 本书的官方网站是www.byteofpython.info 安装就不说了,网上很多,这里就记录下我在安装时的问题,首先到python官网下载,选好安装路 ...
- python 正则使用笔记
python正则使用笔记 def remove_br(content): """去除两边换行符""" content = content.r ...
- 【Python】:简单爬虫作业
使用Python编写的图片爬虫作业: #coding=utf-8 import urllib import re def getPage(url): #urllib.urlopen(url[, dat ...
- python s12 day2
python s12 day2 入门知识拾遗 http://www.cnblogs.com/wupeiqi/articles/4906230.html 基本数据类型 注:查看对象相关成员 var, ...
- python s12 day3
python s12 day3 深浅拷贝 对于 数字 和 字符串 而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...
随机推荐
- 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编程模 ...
- 一、Solr的相关概念了解
1.1. 什么是Solr Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器.Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置.可扩展 ...
- .Netcore之日志组件Log4net、Nlog性能比较
转载请注明出处http://www.cnblogs.com/supernebula/p/7506993.html .Netcore之Log4net.Nlog性能比较 最近在写一个开源.netcore ...
- javaScript数组去重方法
在JAvascript平时项目开发中经常会用到数组去重的操作.这时候就要用到JS数组去重的方法了. demo1: 第一种:JS数组去重操作方法是利用遍历原数组,利用数组的indexOf()方法来来判断 ...
- JS学习四(BOM DOM)
BOM Screen对象 console.log(window.width);//屏幕宽度 console.log(window.height);//屏幕高度 conso ...
- 【2017集美大学1412软工实践_助教博客】团队作业6——展示博客(Alpha版本)
题目 团队作业6: http://www.cnblogs.com/happyzm/p/6791211.html 团队成绩 团队成员简介 项目地址 项目目标,包括典型用户.功能描述.预期用户数量 如何满 ...
- 201521123039 《java程序设计》第七周学习总结
1. 本周学习总结 2. 书面作业 ArrayList代码分析 1.1 解释ArrayList的contains源代码 答:ArrayList的Contains的源码如上图所示,如果o为null,那么 ...
- 201521123008《Java程序设计》第七周实验总结
1.本周学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 2. 书面作业 1.ArrayList代码分析 1.1 解释ArrayList的contains源代码 public bool ...
- 201521123080《Java程序设计》第2周学习总结
1.本周学习总结 a.学习了如何建立远程仓库和本地仓库并建立连接. b.学习了一些基础语法. 2.书面作业 Q1.使用Eclipse关联jdk源代码,并查看String对象的源代码(截图)?分析Str ...
- 201521123065《java程序设计》第14周学习总结
1. 本周学习总结 1.大部分情况下使用的数据库是关系型的数据库,使用表存储数据: 2.关系型数据库可以通过唯一的主键查找记录,也可以通过多个信息确定主键: 3.Mysql操作:显示-show dat ...