当前位置: 首页 > news >正文

Python第八章作业(初级)

第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/131312106
n = int(input())
dic = {} 
f = open("step2/The Old Man and the Sea.txt", "r")
for i, line in enumerate(f): if i >= n: breakfor 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

开始你的任务吧,祝你成功!

with 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,教育部,北京市,本科,

开始你的任务吧,祝你成功!

with 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', '自动化'],...}

开始你的任务吧,祝你成功!

s = 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']]

开始你的任务吧,祝你成功!

import 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]
开始你的任务吧,祝你成功!

with 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 <= len(ls):print(ls[(len(ls)-n):])else:print(ls)res = []for i in range(3, 9):num = 0for d in ls:num += eval(d[i])res.append(eval(f'{num/len(ls):.2f}'))print(res)

第8关:研究生录取数据分析A

任务描述
admit2.csv(文件在“代码文件”里,点开箭头可看到文件及路径)
本题附件包含500名国际高校的研究生申请人的相关信息和预测的录取概率数据。
下表为文件中部分字段及对应含义:

Serial No    GRE Score    TOEFL Score    University Rating    SOP    LOR    CGPA    Research    Chance of Admit
编号1-500    GRE分数    托福分数    本科大学排名分    个人陈述分数    推荐信分数    本科绩点    研究经历(1/0)    录取概率(0-1之间)
研究经历:1代表有,0代表无

录取概率:0-1之间的小数,如0.73代表73%
请按照下列要求对文件中数据进行统计和分析,并严格按照下面所示格式输出结果。
(描述中示例仅为格式示例,数据与测试用例无关)

输入一个数据n

1:如果n为'1',抽取数据中录取概率大于等于80%的记录,计算其中大学排名评分大于等于4分的百分比,程序结束。

1
Top University in >=80%:11.11%
2:如果n为'Research',分别统计和输出录取概率大于等于90%的学生和录取概率小于等于70%的学生中,有研究经历的学生占比,程序结束。(百分比保留两位小数)

Research
Research in >=90%:91.03%
Research in <=70%:22.10%
3:如果n为'2',输出录取概率大于等于80%的学生中TOEFL分数的平均分,最高分和最低分,程序结束。(保留两位小数)

2
TOEFL Average Score:300.12
TOEFL Max Score:323.00
TOEFL Min Score:299.00
4:如果n为'3',输出录取概率大于等于80%的学生中绩点的平均分,最高分和最低分,程序结束。(保留三位小数)

3
CGPA Average Score:4.333
CGPA Max Score:4.910
CGPA Min Score:4.134
5:如果非以上输入,则输出'ERROR',程序结束。

开始你的任务吧,祝你成功!

def readfile1(filename):with open(filename, 'r') as f:res = []for line in f.readlines()[1:]:ls = line.strip().split(',')if eval(ls[-1])>=0.8:res.append(ls)return resdef readfile2(filename):with open(filename, 'r') as f:ls1, ls2 = [], []for line in f.readlines()[1:]:ls = line.strip().split(',')if eval(ls[-1])>=0.9:ls1.append(ls)if eval(ls[-1])<=0.7:ls2.append(ls)return ls1, ls2n = input()
filename = "step9/admit2.csv"
if n == '1':ls = readfile1(filename)count = 0for d in ls:if eval(d[1])>=4:count += 1print("Top University in >=80%%:%.2f%%"%(count/len(ls)*100))
elif n == 'Research':ls1, ls2 = readfile2(filename)count1 = len([0 for d in ls1 if d[-4]=='1'])count2 = len([0 for d in ls2 if d[-4]=='1'])print("Research in >=90%%:%.2f%%"%(count1/len(ls1)*100))print("Research in <=70%%:%.2f%%"%(count2/len(ls2)*100))
elif n == '2':ls = [eval(d[3]) for d in readfile1(filename)]print("TOEFL Average Score:%.2f"%(sum(ls)/len(ls)))print("TOEFL Max Score:%.2f"%max(ls))print("TOEFL Min Score:%.2f"%min(ls))
elif n == '3':ls= [eval(d[-5]) for d in readfile1(filename)]print("CGPA Average Score:%.3f"%(sum(ls)/len(ls)))print("CGPA Max Score:%.3f"%max(ls))print("CGPA Min Score:%.3f"%min(ls))
else:print("ERROR")

第9关:图书数据分析(A)

任务描述
CBOOK.csv
读取附件中的图书数据信息,并按照下列要求对数据进行统计分析(文件编码为utf-8)
文件包含信息格式:编号,书名,出版社,现价,原价,评论数,推荐指数
其中评论数形式为'1290021条评论',书名可能包含书的简单描述,形如'雪落香杉树(福克纳奖得主,全球畅销500万册)'。

要求:
输入一个字符串
输入是'record',统计输出图书数据的总数量,格式见示例
输入是'rank',需要再输入一个书籍编号,分别输出编号对应的书籍信息(编号,书名,出版社,现价,原价,评论数,推荐指数),格式见示例
输入是'maxcomment',输出评论数量最多的10本书的书名和评论数,按评论数量降序排序,格式见示例
输入是'maxname',需要再输入一个数值n,输出书名最长的n本书的名字,按书名长度降序排序,格式见示例
非以上输入,输出'无数据'
下列示例仅表明输入输出格式,输出的数据不是本题答案数据

示例 1
输入:record
输出:600

示例 2
输入:
rank
188
输出:
188
全球通史:从史前史到21世纪(第7版修订版上下册,当当独家赠送全球通史主题笔记本)
北京大学出版社
59.6
96
286574条评论
100%推荐

示例 3
输入:
maxcomment
输出:
追风筝的人(2018年新版) 2444573条评论
活着(2017年新版) 2278231条评论
东野圭吾:解忧杂货店(胡歌、王俊凯、刘昊然倾情推荐,东野圭吾长篇小说代表作,这家店帮你找回内心流失的东西) 2132927条评论
.....
.....

示例 4
输入:
maxname
2
输出:
戒了吧,拖延症――写给年轻人的拖延心理学(人生有限,拖延有害,彻底告别拖延带来的恐惧和焦虑。学会时间管理,看这一本就足够,终结拖延症,你就已经成功超越了93%的人)
银火箭少年科幻系列(8册。亚洲首位“雨果奖”得主刘慈欣主编,根据《流浪地球》改编的电影大年初一上映。套装内图书获银河奖特等奖等多项国际大奖,全球销量超500万册)

示例 5
输入:python
输出:无数据

开始你的任务吧,祝你成功!

def MaxName(l, n):res = sorted(l, key=lambda x:len(x[1]), reverse=True)for d in res[:n]:print(d[1])def MaxComment(l): res = sorted(l, key=lambda x:eval(x[-2][:-3]), reverse=True)for i in res[:10]:print(i[1], i[-2])def Rank(l):n = input()for d in l:if n == d[0]:for i in d:print(i)breakwith open('step10/CBOOK.csv', 'r') as f:l = [line.strip().split(',') for line in f.readlines()[1:]]c = input().lower()if c == 'record':print(len(l))elif c == 'rank':Rank(l)elif c == 'maxname':n=eval(input())MaxName(l, n)elif c == 'maxcomment':MaxComment(l)else:print('无数据')

 

 

http://www.dtcms.com/a/283202.html

相关文章:

  • 如何使用VScode使用ssh连接远程服务器不需要输入密码直接登录
  • 27.Hamming 距离
  • transformers基础Data Collator
  • 教程:如何快速查询 A 股实时 K线和5档盘口
  • 今日行情明日机会——20250716
  • Redis深度解析:从缓存到分布式系统的核心引擎
  • 用python实现自动化布尔盲注
  • pytest--1--pytest-mock常用的方法
  • 代码随想录day36dp4
  • 震坤行获取商品SKU操作详解
  • 16路串口光纤通信FPGA项目实现指南
  • Kotlin获取集合中的元素操作
  • Java与Vue精心打造资产设备管理系统,提供源码,适配移动端与后台管理,助力企业高效掌控资产动态,提升管理效能
  • 【Java】JUC并发(synchronized进阶、ReentrantLock可重入锁)
  • 二重循环:输入行数,打印直角三角形和倒直角三角形
  • Java后端开发核心笔记:分层架构、注解与面向对象精髓
  • 基于Android的旅游计划App
  • Web基础 -MYSQL
  • 冷库耗电高的原因,冷链运营者的降本增效的方法
  • LVS四种模式及部署NAT、DR模式集群
  • CD53.【C++ Dev】模拟实现优先级队列(含仿函数)
  • 【计算机网络】数据通讯第二章 - 应用层
  • 深度学习之反向传播
  • 【迭代】PDF绘本录音播放,点读笔方案调研和初步尝试
  • leetcode 725 分割链表
  • 微算法科技研究量子视觉计算,利用量子力学原理提升传统计算机视觉任务的性能
  • Kafka入门
  • 语音增强论文汇总
  • Go基本数据类型
  • 81、面向服务开发方法