三元运算 条件判断不能加冒号:
a=3 b=5 c=a if a<b else b
oct() 转成八进制的简写:
16进制 标志:BH为后缀或是0x为前缀
hex() 转成16进制
元组
跟列表是一样一样的!但它是只读列表,没有更改的权限!
dir() 把传入的数据类型的,所有方法以列表的形式返回。
作用:
明确的表示 元组里存储的数据是不应该被修改的!!!
list(tuple元组) 变成列表
tuple(list列表) 变成元组
集合 set
linux ={"",""}
python ={"",""}
关系测试
交集 两个都有
print(linux.intersection(python)) #交集
print(linux & python) #交集
差集 两个都没有
print(linux.difference(python))#差集
print(linux - python)
并集
print(linux .unicon(python))#联合 并集
print(linux | python) #联合
对称差集 #把两个互相不在的全打印
print(linux.symmetric_difference(python)) #对称 差集
print(linux ^ python) #对称 差集
两个集合合并 天然去重!把python合并到linux集合中
linux.update(python)
增加一个新的 linux.add("Alex")
求差集并复制给linux集合 linux.difference(python)
删除 linux.discard("alex") #删除,如果元素不再在,不会报错
linux.remove("alex")# 删除,如果元素不存在,会报错
随机删 linux.pop() #随机删除
linux.issubset(python) #子集 判断是否是子集
linux.issuperset() #超集,父集 判断可用<,>进行
string 字符串操作
name ="alex,Alex"
name.capitalize() #首字母大写
name.casefold() #大写变小写
name.center(50,"-") #居中,两边空格用-填充
name.count(‘e‘,3,7) #统计
name.endswith("li") #判断 以什么结尾
name.expandtabs(3)# 设置\t的长度
name.find("e") #返回找到的第一个值的索引,找不到就返回-1
name.format() #格式化输出
name="my name is {0},i am {1} years old!"
name.format("alex",22) print查看输出
name="my name is {name},i am {age} years old!"
name.format(name="alex",age=22) print查看输出
name.format_map(‘name‘:"alex",‘age‘:22) 也可以传一个字典
name.isalnum() #a-z,A-Z,0-9 判断是否是数字
name.isdecimal() #判断是否是一个 正整数
name.isalpha() # 判断是否是字母(字符串必须全是)
name.isidentifier() #identifier 关键字 判断是否是个合法的关键字,是不是合法的变量名
name.islower() #是否是小写
name.isupper() #是否是大写
name.isspace() #是否是空格
name.istitle() #是不是英文标题 (首字母必须大写)
join #把列表拼接成字符串
print("!!!".join(["alex","wang"]))
name.ljust(50,‘-‘) #左对齐
name.rjust(50,‘-‘) #右对齐
name.rfind(‘s‘) #从右往左找,返回索引值
name.swapcase() #大小写互换
name.translate() #翻译
strip() 方法用于移除字符串头尾指定的字符(默认为空格)
split()通过指定分隔符对字符串进行切片,如果参数num 有指定值,则仅分隔 num 个子字符串
IN = ‘abcde’
OUT = ‘12345‘
trans_table = str.maketrans(IN,OUT) #制作对照表
print(name2.translate(trans_table))# 字符翻译
name.replace(‘name’,‘NAME‘,次数) #替换
数据类型
str #它只是一种人类可读的抽象的表示形式
int
float
bool
list
tuple
dict
set
bytes 字节类型(二进制类型) 就是一个8bits的字节
所有的字符要存到内存里,硬盘里,都是bytes格式
在py2中,看到的字符串,就是bytes str==bytes
py3中,所有字符在 内存中都是unicode
解释器读取文件的默认编码是utf-8
str == unicode bytes==bytes
字符编码
decode() 解码
encode() 编码
所有格式的解码,都先解码成unicode格式,再编译。
文件操作
f = open("text.txt",encoding="utf-8") #默认以utf-8解释
print(f.read())
三级菜单优化版
menu = { ‘北京‘:{ ‘海淀‘:{ ‘五道口‘:{ ‘soho‘:{}, ‘网易‘:{}, ‘google‘:{} }, ‘中关村‘:{ ‘爱奇艺‘:{}, ‘汽车之家‘:{}, ‘youku‘:{}, }, ‘上地‘:{ ‘百度‘:{}, }, }, ‘昌平‘:{ ‘沙河‘:{ ‘老男孩‘:{}, ‘北航‘:{}, }, ‘天通苑‘:{}, ‘回龙观‘:{}, }, ‘朝阳‘:{ ‘大悦城‘:{ ‘GOP‘:{}, ‘电影院‘:{}, }, "望京":{}, "团结湖":{}, }, ‘东城‘:{}, }, ‘上海‘:{ ‘闵行‘:{ "人民广场":{ ‘炸鸡店‘:{} } }, ‘闸北‘:{ ‘火车战‘:{ ‘携程‘:{} } }, ‘浦东‘:{}, }, ‘山东‘:{ "德州":{}, "青岛":{}, },}last_layers = [menu] #上一层current_layer = menu #当前层 while True: for key in current_layer: print(key) choice = input(">>:").strip() if len(choice) == 0:continue if choice in current_layer: #进入下一层 last_layers.append(current_layer) #当前层添加到 上一层的列表中 current_layer = current_layer[choice] #再循环进入下一层 if choice == "b": #输入 b 的时候 if last_layers: #判断上一层列表不为空 current_layer = last_layers[-1] #取到上一层,赋值给current_layer last_layers.pop() #删除上一层列表中的最后一个 if choice == "q": #输入 q 直接退出 break