Python 三级菜单-字符编码和转码-集合的操作-文件的操作

三级菜单:

menu = {
    ‘北京‘:{
        ‘海淀‘:{
            ‘五道口‘:{
                ‘soho‘:{},
                ‘网易‘:{},
                ‘google‘:{}
            },
            ‘中关村‘:{
                ‘爱奇艺‘:{},
                ‘汽车之家‘:{},
                ‘youku‘:{},
            },
            ‘上地‘:{
                ‘百度‘:{},
            },
        },
        ‘昌平‘:{
            ‘沙河‘:{
                ‘老男孩‘:{},
                ‘北航‘:{},
            },
            ‘天通苑‘:{},
            ‘回龙观‘:{},
        },
        ‘朝阳‘:{},
        ‘东城‘:{},
    },
    ‘上海‘:{
        ‘闵行‘:{
            "人民广场":{
                ‘炸鸡店‘:{}
            }
        },
        ‘闸北‘:{
            ‘火车战‘:{
                ‘携程‘:{}
            }
        },
        ‘浦东‘:{},
    },
    ‘山东‘:{},
}

exit_flag = False
current_layer = menu  #标志位,用于循环
layers = [menu]    #用于存储循环后的list,记录最后一项的添加项。

while not exit_flag:
    for k in current_layer:    #循环打印字典
        print(k)
    choice = input(‘>>>‘).strip()
    if choice == ‘b‘:        #退出
        current_layer = layers[-1]      #输出列表的最后一项
        layers.pop()     #删除列表的最后一项。用于返回上一级
    elif choice in current_layer:      #正确选择选项
        layers.append(current_layer)     #添加字典到列表最后一项
        current_layer = current_layer[choice]    #进入下一层
    else:            #输入错误
        continue

(思路:使用标志位进行大循环。运用for进行循环打印,使用列表添加删除实现进入下一级和返回上一级)

字符编码和转码

1.在python2默认编码是ASCII, python3里默认是unicode

2.unicode 分为 utf-32(占4个字节),utf-16(占两个字节),utf-8(占1-4个字节), so utf-16就是现在最常用的unicode版本, 不过在文件里存的还是utf-8,因为utf8省空间

3.在py3中encode,在转码的同时还会把string 变成bytes类型,decode在解码的同时还会把bytes变回string

集合操作

集合是一个无序的,不重合的数据组合。

作用:

  • 去重,把一个列表变为一个集合,就自动去重了。
  • 关系测试,测试几组数据之前的交集、差集、并集等关系。

# s = set([1,23,45,6,"hello",(1,23,4)]) #创建一个数值集合,集合内的元素必须是不可哈希
# #  (不可改变的){1, ‘hello‘, 6, 45, 23, (1, 23, 4)}
# t = set(‘Hello‘)  #创建一个唯一字符集合 {‘e‘, ‘l‘, ‘H‘, ‘o‘}
# print(s,t)

# s = set([1,2,3,4])
# t = set([3,4,5,6])
# a = s | t  #s和t的并集 s.union(t) {1, 2, 3, 4, 5, 6}
# b = s & t  #s和t的交集 s.intersection(t) {3, 4}
# c = s ^ t  #求对称差集(在s和t中共同存在以外的)s.symmetric_difference(t) {1, 2, 5, 6}
# d = s - t  #期差集 (s中存在,t中不存在的)s.difference(t) {1, 2}
# print(a,b,c,d)

# 基本操作
s = set([1,2,3,4])
t = set([1,2,3,4,5,6])
# s.add("x")  #添加一项
# s.update([3,4,5,6,"YY"])  #添加多项
# s.remove(1)  #移除集合中的某一项
# a=len(s)  #len集合长度
# a = s in t  #s是否是t的成员
# b = s not in t #s是否不是t的成员
# 测试是否 s 中的每一个元素都在 t 中
# b = t.issubset(s)
# b = s <= t
# 测试是否 t 中的每一个元素都在 s 中
# b = s.issuperset(t)
# b = s >= t
# s.copy()  #集合的浅Copy{1, 2, 3, 4}

总结:1.集合的创建,列表中的元素必须是不可哈希的2.添加元素add、update,删除romover,长度len,复制s.copy。3.关系符:|、&、^、-、<=、>=

文件操作

对文件的操作流程

1.打开文件,得到一个文件句柄并复制给一个变量

2.通过句柄对文件进行操作

3.关闭文件

# f = open(‘file‘)  #打开文件 文件句柄 ,文件句柄 = open(‘文件路径‘, ‘模式‘)
# first_line = f.readline()  #读取文件第一行
# print(‘first_line:‘,first_line) #
# print("我的分隔符".center(30,‘-‘))
# data = f.read()   #读取剩下的,***文件大时误用***
# print(data)
# f.close()

打开文件模式:

  • r,只读模式(默认)。
  • w,只写模式。【不可读;不存在则创建;存在则删除内容;】
  • a,追加模式。【可读;   不存在则创建;存在则只追加内容;】

"+" 表示可以同时读写某个文件

  • r+,可读写文件。【可读;可写;可追加】
  • w+,写读
  • a+,同a

"U"表示在读取时,可以将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用)

  • rU
  • r+U

"b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)

  • rb
  • wb
  • ab
# f = open(‘file‘,‘r‘,encoding=‘utf-8‘)  #只读模式,默认模式
# print(f.read())
# f.close()
# f = open(‘file‘,‘w‘,encoding=‘utf-8‘)#w,只写模式【不可读;不存在则创建;存在则清空内容后添加】
# print(f.writelines(‘add‘))  #add
# f.close()
# f = open(‘file‘,‘a‘,encoding=‘utf-8‘)  #a,追加模式【可读;不存在则创建;存在则只追加内容;】
# print(f.write(‘add‘))
# f.close()
# f = open(‘file‘,‘r+‘,encoding=‘utf-8‘)
# #print(f.write(‘pengdsdap‘))
# print(f.read())
# f.close()

高效读取方法:

# #高效读取方法:
# f = open(‘file‘,‘r‘,encoding=‘utf-8‘)
# for line in f:
#     print(line.strip())

with语句

为了避免打开文件后忘记关闭,可以通过管理上下问:

# with open(‘file‘,‘r‘,encoding=‘utf-8‘) as f:
#     print(f.read())

当with代码模块执行完毕,内部会自动关闭并释放文件资源。

Python2.7版本以后,with同时只多个文件的管理上下文:

# with open(‘file‘,‘r‘,encoding=‘utf-8‘) as f,open(‘file2‘,‘r‘,encoding=‘utf-8‘) as f2:
#     print(f2.read())
#     print(f.read())

总结:1.文件的操作流程 2.打开文件的模式r、a、w和r+、w+、a+。3.读取方式:read、readline、高效读取方式。4.with语句打开文件忘记关闭5.seek、tell?

原文地址:https://www.cnblogs.com/070727sun/p/10795797.html

时间: 2024-08-04 13:43:36

Python 三级菜单-字符编码和转码-集合的操作-文件的操作的相关文章

python学习:字符编码与转码

在Python3中必须先弄清楚的三个问题:1.Python3中默认是Unicode编码.2.gbk --> utf-8.utf-8 --> gbk都要通过Unicode“中转”一下.3.在Python3中,encode后不仅转了编码,还把结果转成了bytes类型.如果要显示中文,再decode一下就可以了. import sys print("Defaultencoding :", sys.getdefaultencoding()) s = '你好' # s是unicode

python字符编码与转码

python 2.x 字符编码与转码 打印系统默认编码格式 import sys print(sys.getdefaultencoding()) UTF-8 转 gbk 方式:utf-8--转成--unicode--转成--gbk a = "你好" print a utf8_to_unicode = a.decode("utf-8")                 #utf-8转unicode print utf8_to_unicode unicode_to_gb

Python——day3_基础1_集合,文件操作,字符编码与转码

集合 集合是一个无序的,不重复的数据组合,它的主要作用如下: 去重,把一个列表变成集合,就自动去重了 关系测试,测试两组数据之前的交集.差集.并集等关系 常用操作 s = set([3,5,9,10]) #创建一个数值集合 t = set("Hello") #创建一个唯一字符的集合 a = t | s # t 和 s的并集 b = t & s # t 和 s的交集 c = t – s # 求差集(项在t中,但不在s中) d = t ^ s # 对称差集(项在t或s中,但不会同时

Python基础3 文件操作、字符编码与转码

文件操作 对文件操作过程 打开文件,得到文件句柄赋值给变量 操作 关闭文件 打开文件的模式有: r,只读模式(默认). w,只写模式.[不可读:不存在则创建:存在则删除内容:] a,追加模式.[可读:   不存在则创建:存在则只追加内容:] "+" 表示可以同时读写某个文件 r+,可读写文件.[可读:可写:可追加] w+,写读 a+,同a "U"表示在读取时,可以将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用) rU r+U "b

python学习笔记(集合的使用、文件操作、字符编码与转码、函数)

集合 集合(set):把不同的元素组成一起形成集合,是python基本的数据类型. 集合元素(set elements):组成集合的成员 为什么需要集合? 集合的作用 1 .列表去重复数据 按照现有知识的解决思路:先设置空列表,然后使用for寻获,把需要去重的列表的第一个数据放到新列表中,然后依次取出第二个数据,把第二个数据和第一个数据作比较,如果不一样,则存入新列表中:以此类推,每取一次都要和新列表中的数据作对比,不一样的则添加入新列表中. 2. 关系测试 比如有学员同时报了python班和l

Python基础day-5[字符编码,文件处理,函数]

字符编码: 为什么要有字符编码?字符编码是为了让计算机能识别我们人写的字符,因为计算机只认识高低电平,也就是二进制数"0","1". 字符编码其实就是在完成一件,字符====>数字的翻译过程. ASCII: 最早计算机是美国发明的,所以最早诞生的ASCII码也是基于英文考虑的.ASCII码:一个Bytes代表一个字符,1Bytes=bit.最早的ASCII只用到后七位. 127个数字,已经完全能代表键盘了,后来又把127号之后的空位来表示新的字母.符号,还加入

Python 三级菜单

Python 三级菜单 需求 打印省.市.县三级菜单 可返回上一级 可随时退出程序 代码实现 1 menu = { 2 '北京':{ 3 '海淀':{ 4 '五道口':{ 5 'soho':{}, 6 '网易':{}, 7 'google':{} 8 }, 9 '中关村':{ 10 '爱奇艺':{}, 11 '汽车之家':{}, 12 'youku':{}, 13 }, 14 '上地':{ 15 '百度':{}, 16 }, 17 }, 18 '昌平':{ 19 '沙河':{ 20 '老男孩':

Python中的字符编码问题

初学Python,本身就在一些语句处有些迷惑,如 a = u'你好',不知加上这个Unicode参数有何作用.一直到做爬虫抓取新闻时,在cmd的输出上总是出现错误.经过检索相关知识后,对一些编码问题做个小总结,其中参杂个人猜测,难免会有错误,以后再慢慢修改了. 1.一定要声明#coding=XXX吗? 首先.py文件中,编码默认是ASCII的,一旦py文件中出现了中文类似编码,IDE就会提示 也就是提示文中出现了非ASCII,建议在文件开始制定编码,当然我们常用的是#coding:utf8 (貌

python三级菜单优化

python三级菜单优化,菜鸟版链接:http://www.cnblogs.com/xuyaping/p/6648170.html menu = { '北京':{ '海淀':{ '五道口':{ 'soho':{}, '网易':{}, 'google':{} }, '中关村':{ '爱奇艺':{}, '汽车之家':{}, 'youku':{}, }, '上地':{ '百度':{}, }, }, '昌平':{ '沙河':{ '老男孩':{}, '北航':{}, }, '天通苑':{}, '回龙观':