5 Python 基础 元组 字典 文件操作
本节内容
-
元组
-
字典的介绍 方法 嵌套
-
文件操作
元组;
元组是不可被修改的
列表非常适合用于储存在程序运行期间可能变化的数据集 列表是可修改的,这对你处理网站的用户列表 或游戏中的角色列表至关重要。
然而,有时候你需要创建一系列不可修改的元素,元组可以满足这种需求。
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())
浙公网安备 33010602011771号