三级菜单
menu = {
'北京':{
'海淀':{
'五道口':{
'soho':{},
'网易':{},
'google':{}
},
'中关村':{
'爱奇艺':{},
'汽车之家':{},
'youku':{},
},
'上地':{
'百度':{},
},
},
'昌平':{
'沙河':{
'老男孩':{},
'北航':{},
},
'天通苑':{},
'回龙观':{},
},
'朝阳':{},
'东城':{},
},
'上海':{
'闵行':{
"人民广场":{
'炸鸡店':{}
}
},
'闸北':{
'火车战':{
'携程':{}
}
},
'浦东':{},
},
'山东':{},
}
current_level = menu
last_levels = []
while True:
for key in current_level:
print(key)
city = input('》').strip()
if len(city) == 0:continue
if city == 'b':
if len(last_levels) == 0:break
current_level = last_levels[-1]
last_levels.pop()
if city == 'q':
break
if city not in current_level:continue
last_levels.append(current_level)
current_level = current_level[city]
1.字典
字典 key:value
#元组,元素不可变
l = ()
#定义符号(),与列表完全一致,唯一不同的是元组内元素不可变
#
dic = {'name':'alex','age':18}
#查询
#取值两种方法
print(dic['name'])
print(dic.get('name'))
#增加
dic['ggg']='x' #k:v
print(dic)
#元素是
#无序的
#修改
dic['name']='hjhjj'
#删除
del dic['name']
print(dic)
#字典的key不可变,value可变
#key类型
#key的定义规则:1.不可变,定义一个数据,然后改变数据,id是否改变,id改变为不可变类型,id不改变为可变类型。#数字,字符串,元组不可变,(列表,字典可变)。
# 2.只要能哈希hash,就能当key,hash有数就表明可以定义为key
#3.字典中key是唯一的
#value类型
#value定义规则:任意类型
#dic={}---->dict()---->_init_()
dic3=dict() #dic={}
print(dic3)
dic4=dict(name='alex',age=18)#dic = {'name':'alex','age':18}
print(dic4)
dic5=dict({'name':'alex','age':18})
dic6=dict((('name','alex'),('age',18)))
dic = {'name':'alex','age':18}
#dic.clear()
#print(dic)
dic1=dic.copy()
print(dic1)
import copy
#等于
#copy 浅copy
copy.deepcopy
dic2=dict.fromkeys('hello',1)
print(dic2)
dic.get('name')#dic['name']
print(dic.items())
print(dic.keys())
print(dic)
dic.pop('name')#删除
dic.popitem()#随机删除
dic.setdefault('gender',[])#增加
dic1={'gender':'male'}
dic.update(dic1)#更新
dic.values()#取字典的value
data = dict.fromkeys([1,2,3],'alex')
print(data)
2.集合
#关系运算
#集合中都是不同的元素,不可重复
s1 = {'a',1,2,3,3,3,3}
s2 = {2,3}
print(s1)
a = {1,2,3,4,6,9}
b = {2,4,9,8,7,5}
#求和,交集
print(a&b)
print(a.intersection(b))
#并集
print(a|b)
print(a.union(b))
#差集 ,去掉b中与a相同的元素
print(a-b)
print(a.difference(b))
#对称差集,不同的部分
print(a^b)
print(a.symmetric_difference(b))
#子集
print(s1<=s2)
print(s2<=s1)
print(s1.issubset(s2))
print(s2.issubset(s1))
#父集
print(s1>=s2)
print(s1.issuperset(s2))
####集合取值
s3 = {1,2,3,'a'}
print('a' in s3)
for i in s3:
print(i)
####元组用途
t1= (1,2,3)
集合的其他内置方法
s1 = {1,2,3}
s1.update('e')
s1.update((1,2,3,4))
s2= {'h','e'}
s1.update(s2)
s1.update('hello')
print(s1)
#增加
s1.add('hello')
print(s1)
#删除
s1.pop()#随机删除
print(s1)
#指定删除
s1.remove('l')
print(s1)
#删除,返回值为空,元素不存在,不报错
print(s1.discard('w'))
print(s1)
s1 = {1,2,3,'a','e'}
s2={1,2,3}
s1.difference_update(s2)
print(s1)
s1.isdisjoint()
3.文件处理
#-*- coding:utf-8 -*-
print(open('test.txt').read())
#read,r:读模式
#w:创建写模式
f = open('myfile','w')
#a:增加模式
#删除模式
#r+;读写模式,追加到最后
#w+:写读,清空创建,再写入
#a+:追加读,追加到最后
f.closed #检查文件是否关闭
f.encoding#打印文件编码格式
f.fileno()#文件在操作系统中的索引值
f.flush()#实时强制刷新文件(保存)
f.isatty()#判断是不是终端文件
f.name#打印文件名
f.newlines#
f.readable()#是否为不可读文件
f.seek()#寻找,移动光标到指定位置
f.seek(10)#从第十个字段开始读
f.tell()#告诉你光标在文件中的位置
f.truncate()#截断,从光标的位置截断
data = ['alex\n','jack\n']
f.writelines(data)#将列表按行插入文件
#eval(data)将字符串转为字典
4.字符编码
高电压:1
低电压:0
计算机只认识数字
字符 ------翻译------》 数字
a------11
1.内存固定使用unicode编码,硬盘的编码(即你可以修改的软件编码)
2.使用什么编码往硬盘存,就用什么编码读
3。程序运行分两河阶段:1.从硬盘读到内存2.python解释器运行已读到内存的代码
4.针对一个test.py文件来说python与nodpad++\vimde区别是多了第二步骤
5.头部编码类型,决定内存从硬盘怎么读
分享
《消费者行为学》
5分钟商学院 app:得到
lib兄弟连 php
戏说php
《林达看美国》