行业知识
【头歌-Python】Python第八章作业(初级)
禁止转载,原文:https://blog.csdn.net/qq_45801887/article/details/131312106
参考教程:B站视频讲解——https://space.bilibili.com/3546616042621301
第1关:统计字母数量
任务描述
读取附件是一篇英文短文,请编写程序统计这篇短文前 n 行中每一个英文字母出现的次数,结果按次数降序排列,次数相同时,按字母表顺序输出。若 n 值大于短文行数,输出整篇文章中每一个英文字母出现的次数(大写字母按小写字母统计)。
The Old Man and the Sea.txt
输入格式
输入一个正整数 n
输出格式
分行输出每个字母的数量,数量占3个字符宽度,居右对齐(参考示例输出)
示例 1
- 输入:
10
- 输出:
e 的数量是 179 个a 的数量是 125 个t 的数量是 121 个h 的数量是 116 个o 的数量是 101 个s 的数量是 92 个i 的数量是 91 个n 的数量是 88 个d 的数量是 77 个r 的数量是 60 个l 的数量是 49 个f 的数量是 46 个w 的数量是 45 个m 的数量是 41 个y 的数量是 40 个u 的数量是 35 个c 的数量是 32 个b 的数量是 29 个g 的数量是 20 个k 的数量是 19 个p 的数量是 13 个v 的数量是 9 个q 的数量是 1 个x 的数量是 1 个j 的数量是 0 个z 的数量是 0 个
本作业各关涉及的文件下载链接如下:
CBOOK.csv
university.csv
info.csv
成绩单.csv
admit2.csv
score1034.json
The Old Man and the Sea.txt
The Great Learning.txt
参考代码
# 禁止转载,原文:https://blog.csdn.net/qq_45801887/article/details/131312106n = int(input())dic = {} f = open("step2/The Old Man and the Sea.txt", "r")for i, line in enumerate(f): if i >= n: break for c in line.lower(): if c.isalpha(): dic[c] = dic.get(c, 0)+1 l = sorted(dic.items(), key=lambda x: (-x[1], x[0]))for k,v in l: print("{} 的数量是 {:>3} 个".format(k, v)) for c in 'abcdefghijklmnopqrstuvwxyz': if c not in dic: print(f"{c} 的数量是 {0:>3} 个")第2关:统计文章字符数
任务描述
读取附件中的文件(utf-8编码),统计并输出文章的前 n 行里共有多少字符(标点符号及换行符按字符统计),以及有多少个不重复的字符?
The Great Learning.txt
输入格式
输入一个正整数 n
输出格式
在一行中输出文章的前 n 行里共有多少字符和有多少个不重复的字符,中间用一个空格分隔
示例 1
- 输入:1000
- 输出:2484 432
参考代码
# 禁止转载,原文:https://blog.csdn.net/qq_45801887/article/details/131312106with open('step3/The Great Learning.txt', 'r', encoding='utf-8') as f: num = int(input()) txt = ''.join(f.readlines()[:num]) print(len(txt), len(set(txt)))第3关:查询高校信息
任务描述
# 以下代码的作用是:# 打开文件,创建一个名为Uname的对象,Uname.readlines()的作用是将文件内容逐行读取到列表中# 文件的每行为一个以‘\n’结尾的字符串,做为列表ls的一个元素# 列表ls的第一个元素ls[0]的内容是:'序号,学校名称,学校标识码,主管部门,所在地,办学层次,备注\n'with open('university.csv','r',encoding='utf-8') as Uname: ls = Uname.readlines()# print(ls)# 输出:['序号,学校名称,学校标识码,主管部门,所在地,办学层次,备注\n', # '1,北京大学,4111010001,教育部,北京市,本科,\n',# '2,中国人民大学,4111010002,教育部,北京市,本科,\n',# '3,清华大学,4111010003,教育部,北京市,本科,\n',# ……# ]附件 ‘university.csv’ 中包含北京主要高校的序号、学校名称、学校标识码、主管部门、所在地、办学层次、备注等信息,以逗号分隔符。 参考提示代码,将文件内容逐行读取到列表中,根据用户输入的学校名,查询学校信息并输出。
university.csv
输入格式
输入一个学校名称
输出格式
输出学校详细信息(注意:行末不得有多余的换行)
示例 1
- 输入:
北京大学
- 输出:
序号,学校名称,学校标识码,主管部门,所在地,办学层次,备注1,北京大学,4111010001,教育部,北京市,本科,
参考代码
# 禁止转载,原文:https://blog.csdn.net/qq_45801887/article/details/131312106with open('step4/university.csv', 'r', encoding='utf-8') as f: txt = f.readlines() s = input().strip() print(txt[0].strip()) for line in txt: if s in line.split(',')[1]: print(line) break第4关:查询高校名
任务描述
# 以下代码的作用是:# 打开文件,创建一个名为Uname的对象,Uname.readlines()的作用是将文件内容逐行读取到列表中# 文件的每行为一个以‘\n’结尾的字符串,做为列表ls的一个元素# 列表ls的第一个元素ls[0]的内容是:'序号,学校名称,学校标识码,主管部门,所在地,办学层次,备注\n'with open('university.csv','r',encoding='utf-8') as Uname: ls = Uname.readlines()print(ls)输出:
['序号,学校名称,学校标识码,主管部门,所在地,办学层次,备注\n', '1,北京大学,4111010001,教育部,北京市,本科,\n','2,中国人民大学,4111010002,教育部,北京市,本科,\n', '3,清华大学,4111010003,教育部,北京市,本科,\n', …… ]
附件’university.csv’中包含北京主要高校的序号、学校名称、学校标识码、主管部门、所在地、办学层次、备注等信息,以逗号分隔符。
参考提示代码,将文件内容逐行读取到列表中,根据用户输入一个关键字,查询学校名称包含用户输入关键字的学校名并输出。
university.csv
输入格式
输入一个关键字
输出格式
包含关键字的全部学校名
示例
- 输入:
中央
- 输出:
中央财经大学中央音乐学院中央美术学院中央戏剧学院中央民族大学
参考代码
with open('step5/university.csv', 'r', encoding='utf-8') as f: name = input() for line in f.readlines(): names = line.split(',')[1] if name in names: print(names)第5关:通讯录读取
任务描述
info.csv
读取附件中的csv文件(通讯录信息),放入字典中(后两项以列表形式做为字典的值),并依次输出其中的信息。文件内数据不需要修改,输出时数据之间以空格间隔。
- 编码格式使用utf-8
- 输入‘A’时,按行输出文件信息
- 输入‘D’时,直接输出字典内容
- 输入其他数据时,输出“ERROR”
输入格式
输入一个字符
输出格式
张自强 12652141777 材 料庚同硕 14388240417 自动化王 岩 11277291473 文 法杨 彪 18807390227 材 料姚梦雪 14101628144 文 法黄国宝 19439017361 材 料麦啟聪 18844865547 信 息陈天润 14622379485 材 料项子烜 14226176598 文 法任晋宏 15076627604 信 息王玉云 11128829508 文 法周佳乐 10826074903 文 法
输入输出示例
示例1:
- 输入:A
- 输出:
张自强 12652141777 材 料.....
示例2:
输出:D
输出:
{'张自强': ['12652141777', '材\u3000料'], '庚同硕': ['14388240417', '自动化'],...}参考代码
# 禁止转载,原文:https://blog.csdn.net/qq_45801887/article/details/131312106s = input()if s not in 'AD': print('ERROR') else: with open('step6/info.csv', 'r', encoding='utf-8') as f: if s == 'A': print(f.read().replace(',', ' ')) else: dic = {} for line in f.readlines(): l = line.strip().split(',') dic[l[0]] = l[1:] print(dic)第6关:JSON转列表
任务描述
读取附件中的JSON文件,转为列表输出。
score1034.json
输入格式
输入一个正整数 n
输出格式
输出列表的前n个元素,格式如示例所示
示例
- 输入:
2
- 输出:
[['姓名', '学号', 'C', 'C++', 'Java', 'Python', 'C#', '总分'], ['刘雨', '0121701100507', '20', '20', '20', '16', '20', '96']]
参考代码
# 禁止转载,原文:https://blog.csdn.net/qq_45801887/article/details/131312106import jsonwith open('step7/score1034.json', 'r', encoding='utf-8') as f: txt = json.loads(f.read()) data = [['姓名', '学号', 'C', 'C++', 'Java', 'Python', 'C#', '总分']] for dic in txt: data.append(list(dic.values())) n = int(input()) print(data[:n])第7关:利用数据文件统计成绩
任务描述
利用附件中的成绩数据进行成绩统计,根据总分进行升序排序后,输出总分最低分和最高分,按总分升序输出前n名同学和后n名同学成绩信息(n为非负数,当n大于数据行数时,按实际行数输出),输出每题的平均成绩。
(注:数据文件中最后一列是总分,第4-9列每列为一道题的成绩,打开与关闭文件代码已经给出)
成绩单.csv
输入格式
输入一个正整数
输出格式
参考示例
示例
- 输入:
2
- 输出:
最低分0分,最高分30分[['12529', '朱佳年', '0121701100203', '0', '0', '0', '0', '0', '0', '0'], ['12347', '李世祥', '0121701100208', '0', '0', '0', '0', '0', '0', '0']][['11916', '杨旺霖', '0121701100527', '5', '5', '5', '5', '5', '5', '30'], ['11955', '罗家威', '0121701100622', '5', '5', '5', '5', '5', '5', '30']][3.11, 3.24, 2.97, 3.24, 2.57, 3.24]
参考代码
# 禁止转载,原文:https://blog.csdn.net/qq_45801887/article/details/131312106with open('step8/成绩单.csv', 'r', encoding='utf-8') as f: n = int(input()) ls = [] for line in f.readlines(): ls.append(line.strip('\n').split(',')) ls.sort(key = lambda x:eval(x[9])) print('最低分{}分,最高分{}分'.format(ls[0][9], ls[-1][9])) print(ls[:n]) if n
- 输出:
- 输入:
- 输出:
- 输入:
- 输出:
- 输入:
- 输出:
- 输入:
- 输出: