打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
第15关精华笔记

第15关精华笔记pdf版——同学记得打开电脑浏览器下载哦!

 副本_第15关精华笔记.pdf 0.4MB 


什么是编码?

计算机只认识0和1,为了更好的交流,这种从人类语言到计算机语言转换的形式,叫做编码表。数字或者字母在计算机储存的时候需要转换成二进制,每个人转换的规则就叫做编码。

人类语言 → 计算机语言 encode()

计算机语言 → 人类语言 decode()

文件读取:

牢记步骤:打开文件 —— 读取文件 —— 关闭文件

模板写法:









第二行代码是把读取到的内容存到了filecontent变量里面,下面打印出来,read()函数是将所有内容都读取出来

但也有按行读取的需求,也就是一行行,这里要利用到readlines()函数

切记用open函数最后要close()文件

写入文件:





同样要记住最后要close()

但如果加一个with关键字,如with open 作用之后,文件对象会自动找到合适时机关闭,不需要我们手动调用close()

当然写入的数据多种多样,我们要更换写入或者读取的模式,记住下面这个表很关键!!!





其他知识点:

字符串的 split()函数:

按照空格分割字符串,str.split()。 分裂之后的字符串会被以列表元素的格式被包裹

列表的的 join()函数:

把字符串合并,用法是str.join(sequence), str代表在这些字符串之中。 与split相反,把列表中的元素合并成一串字符。

读写对象的 writelines()

因为write()的参数必须是一个字符串,但是有时候我们要写入别的内容,所以用到writelines()这后面的参数可以是列表

课后练习参考答案

练习-数据转移中的变化-参考

1.编码和解码

【参考】

# 1.分别使用gbk和utf-8编码自己的名字,并将其打印出来。
print('吴枫'.encode('gbk'))
print('吴枫'.encode('utf-8'))
# 2.复制上一步得到的结果,进行解码,打印出你的名字(两次)。
print(b'\xe5\x90\xb4\xe6\x9e\xab'.decode('utf-8'))
# 3.使用gbk解码b'\xb7\xe7\xb1\xe4\xbf\xc6\xbc\xbc\xd3\xd0\xd2\xe2\xcb\xbc',并打印出来。
print(b'\xb7\xe7\xb1\xe4\xbf\xc6\xbc\xbc\xd3\xd0\xd2\xe2\xcb\xbc'.decode('gbk'))

2.通过文件读写,复制图片

【参考】

# 先打开图片
with open('photo1.png','rb') as file:  # 以“rb”模式打开图片
    data = file.read()
    with open('photo3.png','wb') as newfile:  # 以“wb”模式写入
        newfile.write(data)

2.在读写之间处理数据-2

【参考】

file1 = open('scores.txt','r',encoding='utf-8') 
file_lines = file1.readlines() 
file1.close()
final_scores = []
for i in file_lines:
    data =i.split()
    sum = 0  # 先把总成绩设为0
    for score in data[1:]:  # 遍历列表中第1个数据和之后的数据
        sum = sum + int(score)  # 然后依次加起来,但分数是字符串,所以要转换    
    result = data[0]+str(sum)+'\n'  # 结果就是学生姓名和总分
    print(result)
    final_scores.append(result)
print(final_scores)
sum1 = open('winner.txt','w',encoding='utf-8') 
sum1.writelines(final_scores)
sum1.close()

2.在读写之间处理数据-2

【参考】

file1 = open('winner.txt','r',encoding='utf-8')
file_lines = file1.readlines()
file1.close()
dict_scores = {}
list_scores = []
final_scores = []
# print(file_lines)
# print(len('\n'))
# 打印结果为:['罗恩102\n', '哈利383\n', '赫敏570\n', '马尔福275\n']
# 经过测试,发现'\n'的长度是1。所以,名字是“第0位-倒数第5位”,分数是“倒数第4位-倒数第二位”。
# 再根据“左取右不取”,可知:name-[:-4],score-[-4:-1]
for i in file_lines: # i是字符串。
print(i)
name = i[:-4] # 取出名字(注:字符串和列表一样,是通过偏移量来获取内部数据。)
score = int(i[-4:-1]) # 取出成绩
print(name)
print(score)
dict_scores[score] = name # 将名字和成绩对应存为字典的键值对(注意:这里的成绩是键)
list_scores.append(score)
# print(list_scores)
list_scores.sort(reverse=True) # reverse,逆行,所以这时列表降序排列,分数从高到低。
# print(list_scores)
for i in list_scores:
result = dict_scores[i] + str(i) + '\n'
# print(result)
final_scores.append(result)
print(final_scores) # 最终结果
winner_new = open('winner_new.txt','w',encoding='utf-8')
winner_new.writelines(final_scores)
winner_new.close()

练习-古诗默写-参考

练习目标

这个练习,会让你学会一种方法,可以直接修改原文件中的数据。

练习要求

语文老师将一些古诗存在txt文档里,一句一行。

最近,他计划抽一些古诗,自己设置一些空来让学生默写。

请你用代码帮老师完成这项工作(只要处理了一个文档,加上循环就能处理无数个文档了)。

【讲解】

明确目标很重要(所以重复三遍)。

做到后面的步骤,可再点开左侧的“练习介绍”查看。

我们以李商隐的《锦瑟》为例,这是原文档里的内容:

锦瑟

[唐] 李商隐

锦瑟无端五十弦,

一弦一柱思华年。

庄生晓梦迷蝴蝶,

望帝春心托杜鹃。

沧海月明珠有泪,

蓝田日暖玉生烟。

此情可待成追忆,

只是当时已惘然。

老师在这首诗想考学生“一弦一柱思华年。”和“只是当时已惘然。”,即他想得到的是:

锦瑟

[唐] 李商隐

锦瑟无端五十弦,

____________。

庄生晓梦迷蝴蝶,

望帝春心托杜鹃。

沧海月明珠有泪,

蓝田日暖玉生烟。

此情可待成追忆,

____________。

【提示】

为了让代码逻辑简洁且便于更新,可以将需要默写的诗句都放到一个表格里。

另外,当遇到默写诗句时,可以用英文的下划线去替代(____________)。

【解答】

list_test = ['一弦一柱思华年。\n','只是当时已惘然。\n']
with open ('poem2.txt','r') as f:
    lines = f.readlines()
print(lines)
with open('poem2.txt','w') as new:
    for line in lines:
        if line in list_test:
            new.write('____________。\n')
        else:
            new.write(line)
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
第15关,文档读写易错点笔记
山顶常见问题解答
Python IO文件管理
Python - r'', b'', u'', f'' 的含义
不可不知的Python字符编码使用技巧(中)
Python字符串方面的知识
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服