5 Python 基础 元组 字典 文件操作

本节内容

  1. 元组

  2. 字典的介绍 方法  嵌套 

  3. 文件操作

 元组;

   元组是不可被修改的

   列表非常适合用于储存在程序运行期间可能变化的数据集 列表是可修改的,这对你处理网站的用户列表 或游戏中的角色列表至关重要。

   然而,有时候你需要创建一系列不可修改的元素,元组可以满足这种需求。

   Python将不能修改的值称为不可变的,不可变得列表称为元组。

   不可变类型:   整形   字符串   元组   

元组看起来犹如列表,但使用圆括号 而不是方括号。定义元组后,就可以使用索引来访问其元素,就像访问列表一样。

2 字典

   在Python中,字典是一系列的键-值对。

  每个键都与一个值相关联,你可以使用键来访问,与之 ,相关的值。

  与字典相关联的可以是数字   字符串    列表   乃至字典。

  事实上,可将任何Python对象用作字典中的值

在Python中 字典放在{}中的,一系列键-值对表示,

 键值对是两个相关联的值   指定键时

  Python将返回相关联的值    键与值之间用冒号分割,而键-值对之间用逗号分割。

  举个例子:

wk = {'name':'wangkuan','age':'21'}
obj = wk
print(obj['name'])
print(obj['age'])

#'name':'wangkuan'  他两叫键值对

#name 是键 wangkuan 是值  对应关系

 字典的 增  删  改 查

增 

 dic1 = {'name':'wk','age':'21',}

 dic1['girl'] = 'tie  chui'

 print(dic1)

#字典里没有girl  添加   值  铁锤

  

dic2 = {'name':'wk','age':'21',}

dic2.setdefault('1','111')#如果字典里有这个键,就不会添加 没有 会添加

print(dic2)

  

dic2 = {'name':'wk','age':'21',}

# dic2.setdefault('1','111')#如果字典里有这个键,就不会添加 没有 会添加
# print(dic2)


ret = dic2.setdefault('age','18')#可以看返回值
print(dic2)
print(ret)

  

查  

dic3 = {'name':'wk','age':'21',}

print(dic3['name'])

  

#查
dic3 = {'name':'wk','age':'21',}

print(dic3.get('name'))  
#如果没有这个键就返回空 也可以在后面赋值 没有就打印你赋值这个 print(dic3.get('name':'asc'))

  

dic3 = {'name':'wk','age':'21',}


print(dic3.keys())#查键

 

dic4 = {'name':'wk','age':'21',}

dic4['age'] = 18

print(dic4)

  

dic4 = {'name':'wk','age':'21',}

dic5 = {'1':'11111','2':'22222',}

dic4.update(dic5)

#dic5添加到4里面  5  不变

print(dic4)
print(dic5)

 

dic6 = {'name':'wk','age':'21',}

#删除指定键值对
del dic6['age']

print(dic6)

  

dic7 = {'name':'wk','age':'21',}

#清空  字典里是空的
dic7.clear()

print(dic7)

  

dic8 = {'name':'wk','age':'21',}

#删除键值对 能看回值
ret = dic8.pop('name')

print(ret)
print(dic8)

  

dic9 = {'name':'wk','age':'21',}

del dic9#删除整个字典

print(dic9)

  

嵌套以及 三级登录

实现字典的嵌套   省   市  县  镇  用户根据指定的输入  查看下面的  市县

home = {
    '山西':{
        '阳泉':{
            '平定':{
                '冠山':{},
                '娘子关':{},
            },
            '盂县':{
                '仙人':{},
                '石宝':{},
            },
        },
        '太原':{
            '小店':{},
            '杏花岭':{},
        },
    },
}

current_layer = home#实现动态循环
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
        #当用户选择bd的选择 就可以直接取列表的最后一个值出来ok了
        current_layer = current_layer[choice]#改成字层
    elif choice == "b":
        if parent_layers:
            current_layer = parent_layers.pop()#取出列表的最后一个值,因为他就是当前层的父级。
    else:
        print("无此项")

  

 3 文件操作;

    文本文件可储存的数据量多的难以置信:天气数据 ,交通数据 ,文学作品,每当需要分析或修改储存在文件中的信息时

读取文件都很有用 ,对数据分析,应用程序来说尤其如此。

  列如,你可以编写这样一个程序:重新设置这些数据的格式  并将其写入文件。

   假如先创建一个 文本文件 texe 文件名字 叫     将进酒   。

  文件内容

 

君不见,黄河之水天上来,奔流到海不复回。
君不见,高堂明镜悲白发,朝如青丝暮成雪。
人生得意须尽欢,莫使金樽空对月。
天生我材必有用,千金散尽还复来。
烹羊宰牛且为乐,会须一饮三百杯。
岑夫子,丹丘生,将进酒,杯莫停。
与君歌一曲,请君为我倾耳听。
钟鼓馔玉不足贵,但愿长醉不复醒。
古来圣贤皆寂寞,惟有饮者留其名。
陈王昔时宴平乐,斗酒十千恣欢谑。
主人何为言少钱,径须沽取对君酌。
五花马,千金裘,呼儿将出换美酒,与尔同销万古愁。


同一个目录下写Python执行文件

通过操作句柄对文件进行操作
with 方法不在需要访问文件后关闭
oppe 是函数方法 接受一个参数 要打开的文件名称
r 是读模式
with open('将近酒','r',encoding = 'utf8') as f:#操作句柄

    data = f.read()#读模式  括号里可以写控制几个字节 不写全读
    print(data)

w 写模式   不过要注意 在写之前它会把之前 文件里的内容清空   重新写  如果没有这个文件它 会自己创建 在写入文件   慎用!

with open('将近酒','w',encoding = 'utf8') as f:

       #把之前的清空  重新写 可以叠加 清空在句柄时已经清空

    f.write('hello word \n')

       #\n换行符             #可以 没有的文件 创建一个文件

    f.write('wang kuan')

a  是追加模式

with open('将近酒','a',encoding = 'utf8') as f:#a 是追加模式  添加内容可以用write

    f.write('\n hello word \n')

    f.write('wang kuan')

取第一行 跟着光标移动 取完第一行 然后取第二行

with open('将近酒','r',encoding = 'utf8') as f:

    print(f.readline())#取第一行 跟着光标移动  取完第一行 然后取第二行

    print(f.readline())

  

with open('将近酒','r',encoding = 'utf8') as f:
    
    #print(f.readlines())  #这样直接打印是列表的形式  所以用for循环


    for i in f.readlines():
        
        print(i.strip())
    #加strip作用是去除字符串头尾的指定字符(默认空格 换行符)

  想要在自己的那行加  自己  的名字

with open('将近酒','r',encoding = 'utf8') as f:

    number = 0

    for i in f:#这是for内部将f对象做成一个迭代器 用一个取一个

        number += 1

        if number == 4:
            
            i = ''.join([i.strip(),"wang kuan"])

        print(i.strip())

  

结果:

君不见,黄河之水天上来,奔流到海不复回。
君不见,高堂明镜悲白发,朝如青丝暮成雪。
人生得意须尽欢,莫使金樽空对月。
天生我材必有用,千金散尽还复来。wang kuan
烹羊宰牛且为乐,会须一饮三百杯。
岑夫子,丹丘生,将进酒,杯莫停。
与君歌一曲,请君为我倾耳听。
钟鼓馔玉不足贵,但愿长醉不复醒。
古来圣贤皆寂寞,惟有饮者留其名。
陈王昔时宴平乐,斗酒十千恣欢谑。
主人何为言少钱,径须沽取对君酌。
五花马,千金裘,呼儿将出换美酒,与尔同销万古愁。

 

r 读模式 时  最后会有一个空行应为 read()  到达文件末尾时返回一个空字符串,而将这个空字符串显示出来就是一个空行,要想删除末尾空行,可在

print语句 中 使用 rstrip()      

print(data.rstrip())

 

posted @ 2018-08-17 19:07  取经之路  阅读(97)  评论(0)    收藏  举报