'''
数据结构: menu = {
'北京':{
'海淀':{
'五道口':{
'soho':{},
'网易':{},
'google':{}
},
'中关村':{
'爱奇艺':{},
'汽车之家':{},
'youku':{},
},
'上地':{
'百度':{},
},
},
'昌平':{
'沙河':{
'老男孩':{},
'北航':{},
},
'天通苑':{},
'回龙观':{},
},
'朝阳':{},
'东城':{},
},
'上海':{
'闵行':{
"人民广场":{
'炸鸡店':{}
}
},
'闸北':{
'火车战':{
'携程':{}
}
},
'浦东':{},
},
'山东':{},
} 需求:
可依次选择进入各子菜单
可从任意一层往回退到上一层
可从任意一层退出程序
所需新知识点:列表、字典
'''
# 1.只用一个while循环,且整体代码量少于15行按完成需求/条—25分
# 2.只用一个while循环,且整体代码量多于15行需求全部完成给90分
# 3.其他情况按完成需求/条—20分 menu = {
'北京':{
'海淀':{
'五道口':{
'soho':{},
'网易':{},
'google':{}
},
'中关村':{
'爱奇艺':{},
'汽车之家':{},
'youku':{},
},
'上地':{
'百度':{},
},
},
'昌平':{
'沙河':{
'老男孩':{},
'北航':{},
},
'天通苑':{},
'回龙观':{},
},
'朝阳':{},
'东城':{},
},
'上海':{
'闵行':{
"人民广场":{
'炸鸡店':{}
}
},
'闸北':{
'火车战':{
'携程':{}
}
},
'浦东':{},
},
'山东':{},
}
new_menu = menu
menu_list = []
while True:
print('Here is Ur menu')
for k in new_menu:print(k)
order = input('please input your order(choice or B(b) or Q(q))>>>').strip()
if order not in new_menu and order.lower()!= 'q' and order.lower()!= 'b':continue
if order in new_menu:
menu_list.append(new_menu)
new_menu = new_menu[order]
if order.lower() == 'q':break
if order.lower() == 'b'and len(menu_list)!=0:
new_menu = menu_list.pop()
else:print('It is already the top!')

三级菜单

1.程序是数据和算法的结合(名词是数据,动词是算法)

2.尽量少的处理文件或者操作数据库

3.数据结构设计的好坏,直接影响了算法的实现复杂度

4.应不断的优化自己的代码,阅读他人的优秀的思路

##################################################################

#文件操作的其他方法

##############################################################################
#文件的内置操作函数
# 1.closed 查看文件是否是关闭的状态,输出为布尔值,关闭的为True,未关闭的为False
# 2.encoding表示编码的形式,函数方法打开的编码形式
# print(f.encoding)
# cp936
#************************************************************************
#不知道文件编码是什么形式的情况下,还是要写文件或读文件的信息,处理办法:
#用拉丁文的方式打开文件latin-1
# f = open('test','r+',encoding='latin-1')#尽可能多的保留数据
# data = f.read()
# print(data)
# f.write('aaaaaaaa')
#文件的编码获取的是系统的默认编码
# f = open('test','r+',encoding='UTF-8')
# f.flush()#刷新,使用这个命令就会保存文件
# f.isatty()#终端设备
# print(f.tell())
# f.readline()
# f.readline()
# print(f.tell())#光标的当前位置
#newline=''就是不要python自带的屏蔽参数
#文件内光标的移动:除了read()代表读取3个字符,其余的文件内光标的移动都是以字节为单位,如seek、tell、read
# f.seek(3)
# print(f.read())
# 456
# 789
# opqsdasdnagaaaaaaaaaaaaaaaa
# print(f.read(5))
# 123
# 4
# f.truncate(10)#文件截断,属于文件的切割写操作
# print(f.truncate(10))
#####################################################################
# f = open('test','rb')
# print(f.tell())
# f.seek(10)
# print(f.tell())
# f.seek(3)
# print(f.tell())
#seek的移动光标默认是从0的位置开始移动
#############################################################
#seek的几种用法
#1.必须为'rb'模式才可以使用
#参数1为接指定上一次光标后的位置
#参数2为倒序,从结尾开始的光标,前面的顺序必须为负数的形式
# print(f.tell())
# f.seek(-1,2)
# print(f.tell())
# f.seek(3,1)
# print(f.tell())
#################################################################################################################
#高端玩法:打开大文件的最后一行
# f = open('test','rb')
# for i in f:
# offs = -5#偏移量需要自己估计,最后一行大约有多少个字节
# while True:#做一个死循环
# f.seek(offs,2)
# rows = f.readlines()#从当前光标位置开始读取一行的所有内容
# if len(rows) > 1:#如果文件读取的行数超过1行,则打印最后一行
# print('文件的最后一行是%s'%(rows[-1].decode('UTF-8')))
# break
# offs*=2
# 文件的最后一行是+---------------------------------------------------------------------------+
#***************************************************************************************************************#
# 什么是递归?
# 函数自己调用自己的方法就是递归
# 什么是迭代?
# 可以被for循环遍历的,每次循环得到的结果都是上一次的结果得出的
# 什么是迭代器协议?
# 1.迭代器协议是指:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个Stoplteration异常,
# 以终止迭代(只能往后不能往前退)
# 2.可迭代对象:实现了迭代器协议的对象(如何实现:对象内部定义一个_iter_()方法)
# 3.协议是一种约定,可迭代对象实现了迭代器协议,python的内部工具(如for循环、sum、min、max函数等)使用迭代器协议访问对象
# l = [1,2,3,4]
# for i in l:
# print(i)
######################Python的for循环机制##########################################################
# for循环的本质:循环所有的对象,全都是使用迭代器协议
#(字符串、列表、元祖、字典、集合、文件对象)这些都不是可迭代对象,只不过在for循环式,调用了内部的_iter_方法,变成了可迭代对象
# 然后for循环调用可迭代对象的_next_方法去取值,而且for循环会捕捉Stoplteration异常,以终止迭代
# l = [1,2,3,4]
# for i in l: #1.先执行_iter_(),再执行next方法
# print(i) #捕捉了异常,不再迭代
# l = [1,2,3,4]
# iter = l.__iter__()#遵循迭代器协议,生成可迭代对象
# print(iter.__next__())
# print(iter.__next__())
# print(iter.__next__())
# print(iter.__next__())
# l = [1,2,3,4]
# index = 0
# while index<len(l):
# print(l[index])
# index+=1
# 1
# 2
# 3
# 4

路飞学城-Python开发-第二章的更多相关文章

  1. 路飞学城-Python开发-第一章

    # 基础需求: # 让用户输入用户名密码 # 认证成功后显示欢迎信息 # 输错三次后退出程序 username = 'pandaboy' password = ' def Login(username ...

  2. 路飞学城-Python开发集训-第3章

    学习心得: 通过这一章的作业,使我对正则表达式的使用直接提升了一个level,虽然作业完成的不怎么样,重复代码有点多,但是收获还是非常大的,有点找到写代码的感觉了,遗憾的是,这次作业交过,这次集训就结 ...

  3. 路飞学城-Python开发集训-第1章

    学习体会: 在参加这次集训之前我自己学过一段时间的Python,看过老男孩的免费视频,自我感觉还行,老师写的代码基本上都能看懂,但是实际呢?....今天是集训第一次交作业的时间,突然发现看似简单升级需 ...

  4. 路飞学城-Python开发集训-第4章

    学习心得: 学习笔记: 在python中一个py文件就是一个模块 模块好处: 1.提高可维护性 2.可重用 3.避免函数名和变量名冲突 模块分为三种: 1.内置标准模块(标准库),查看所有自带和第三方 ...

  5. 路飞学城-Python开发集训-第2章

    学习心得: 这章对编码的讲解超级赞,现在对于编码终于有一点认知了,但还没有大彻大悟,还需要更加细心的琢磨一下Alex博客和视频,以前真的是被编码折磨死了,因为编码的问题而浪费的时间很多很多,现在终于感 ...

  6. 路飞学城-Python开发-第三章

    # 数据结构: # goods = [ # {"name": "电脑", "price": 1999}, # {"name&quo ...

  7. 路飞学城-Python开发集训-第5章

    面向过程:核心是过程二字,过程是解决问题的步骤,相当于设计一条流水线,是机械式的思维方式 优点:复杂的问题流程化,进而简单化 缺点:可扩展性差 面向对象:核心是对象二字,对象就是特征与技能的结合体. ...

  8. 路飞学城—Python爬虫实战密训班 第二章

    路飞学城—Python爬虫实战密训班 第二章 一.Selenium基础 Selenium是一个第三方模块,可以完全模拟用户在浏览器上操作(相当于在浏览器上点点点). 1.安装 - pip instal ...

  9. 路飞学城—Python爬虫实战密训班 第三章

    路飞学城—Python爬虫实战密训班 第三章 一.scrapy-redis插件实现简单分布式爬虫 scrapy-redis插件用于将scrapy和redis结合实现简单分布式爬虫: - 定义调度器 - ...

随机推荐

  1. DB2导出表结构、表数据小结

    一.DB2命令行导出数据库全库表结构 ① Win+R进入到DB2安装目录的BIN目录下,执行命令:DB2CMD,进入到DB2 CLP窗口. 命令:DB2CMD ② 创建一个data文件夹 命令:MKD ...

  2. Maintain Aspect Ratio Mixin

    Maintain Aspect Ratio Mixin Maintain the aspect ratio of a div with CSS RESPONSIVE ASPECT RATIOS WIT ...

  3. NYOJ 71 独木舟上的旅行【贪心】

    解题思路:给出船的最大载重量w,和n个人,每只船最多可以乘坐两个人,问怎样坐船使得安排的船只的数量最少.这n个人的体重为a1,a2,a3,---,an-1,an首先将体重按升序排列好,再考虑最重的人, ...

  4. Guitar Pro中文版下载,你想要的,都在这啦!

    我的音乐我做主!Guitar Pro7中文版的发布为更多音乐爱好者带来更多更优质的体验!为帮助所有吉他爱好者学习.绘谱.创作而设计的音乐空间!为前所未有的音乐盛听而震撼,音乐才子,等的就是你! Gui ...

  5. JQ UI dialog

    初始化参数 对于 dialog 来说,首先需要进行初始化,在调用 dialog 函数的时候,如果没有传递参数,或者传递了一个对象,那么就表示在初始化一个对话框. 没有参数,表示按照默认的设置初始化对话 ...

  6. java的算法实现冒泡

    package xutao3;public class test1 { public static void main(String[] args) { int[] arr={12,88,66,55, ...

  7. redis 篇 - hash

    hash 可以认为是 python 中的字典 field 不允许重复 string类型的field和value的映射表 每个hash可以存储 232 - 1 键值对(40多亿) 方法 hest key ...

  8. UVA340-Master-Mind Hints(紫书例题3.4)

    MasterMind is a game for two players. One of them, Designer, selects a secret code. The other, Break ...

  9. [中文] 以太坊(Ethereum )白皮书

    以太坊(Ethereum ):下一代智能合约和去中心化应用平台 翻译|巨蟹 .少平 译者注|中文读者可以到以太坊爱好者社区(www.ethfans.org)获取最新的以太坊信息. 当中本聪在2009年 ...

  10. %02x与%2x之间的区别

    输出最小宽度用十进制整数来表示输出的最少位数.若实际位数多于定义的宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格或0(当最小宽度数值以0开头时). X 表示以十六进制形式输出02表示不足两 ...