Python-Basis-5th

周一,晴,记录生活分享点滴

参考博客1:https://www.cnblogs.com/alex3714/articles/5717620.html

参考博客2:https://www.cnblogs.com/yuanchenqi/articles/5938733.html

Python版本:3.5

三级菜单 

menu = {
    "河北省":{
        "石家庄市":{
            "正定县":{},
            "桥西区":{},
        },
        "保定市":{
            "莲池区":{},
            "徐水区":{},
        },
    },
    "吉林省":{
        "长春市":{
            "朝阳区":{},
            "绿园区":{},
        },
        "吉林市":{
            "丰满区":{},
            "船营区":{},
        },
    }
}

current_layer = menu  #实现动态循环
parent_layers = []  #保存所有父级,最后一个元素永远都是父亲级
while True:
    for key in current_layer:
        print(key)
    choice = input(">>>:").strip()
    if len(choice) == 0: continue
    if choice in current_layer:
        parent_layers.append(current_layer)  #在进入下一层之前,把当前层(也就是下一层父级)追加到列表中。下一次loop,当用户选择b的选项,就可以直接取到列表的最后一个值出来就可以了
        current_layer = current_layer[choice]  #改成了子层
    elif choice == "b":
        if parent_layers:  #[]
            current_layer = parent_layers.pop()  #取出列表的最后一个值,因为它就是当前层的父级
    else:
        print("无此项")

小结:

  • 标志位,即
  • current_layer = menu
  • parent_layers = []
  • .strip()   
  • 用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。
  • 只能删除开头或是结尾的字符,不能删除中间部分的字符。
  • len()
  • 返回对象(字符、列表、元组等)长度或项目个数
  • .append()
  • 在列表末尾添加新的对象
  • .pop()
  • 删除字典给定键 key 及对应的值,返回值为被删除的值。key 值必须给出。 否则,返回 default 值

编码解码

in python2

默认是  ASCII

py2数据类型:str:bytes、unicode:unicode

  • 打印结果是明文,一定是unicode
  • 可以在ASCII表内拼接,在内部做了转换,把bytes转成了unicode
  • str = bytes

py2中首行的 coding:utf8 ,告诉解释器说编码解码按utf8的形式去搞,前提是本身的文本是utf8的(GBK同理)

#python 2
s = "虫儿飞"
s_to_unicode = s.decode("utf-8")
unicode_to_gbk = s_to_unicode.encode("gbk")
print(s)
print("unicode:",s_to_unicode)
print("gbk:",unicode_to_gbk)

gbk_to_unicode =unicode_to_gbk.decode("gbk") #unicode_to_gbk.decode()
unicode_to_utf8 = gbk_to_unicode.encode("utf-8")

print(gbk_to_unicode)
print(unicode_to_utf8)

in python3

默认是  unicode 

  • encode  在编码的同时,会把数据从 string 转成 bytes 类型
  • decode  在解码的同时,会把数据从 bytes 转成 string 类型,即字符串
  • b = byte = 字节类型 = [ 0-255 ]

str = unicode

bytes不可以与unicode进行拼接

#python 3
s = "I am 虫儿飞ZZZZZC."
s_to_gbk = s.encode("gbk")
print(s)
print(s_to_gbk)  #在编码的同时,把数据转成bytes类型
print(s_to_gbk.decode("gbk"))  #在解码的同时,会把bytes类型转成字符串

编码解码方式

s = '你好'

b = bytes(s, 'utf8')  # 编码,等同于 b = s.encode('utf8')

ss = str(b, 'utf8')  # 解码,等同于 ss = b.decode('utf8')

文件的编码方式与解释器的需一致

原文地址:https://www.cnblogs.com/chungzhao/p/12908573.html