Python第九章作业(初级)

这篇具有很好参考价值的文章主要介绍了Python第九章作业(初级)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

第1关:统计字母数量

第2关:统计文章字符数

第3关:查询高校信息

第4关:查询高校名

第5关:通讯录读取

第6关:JSON转列表

第7关:利用数据文件统计成绩

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

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


第1关:统计字母数量

读取附件是一篇英文短文,请编写程序统计这篇短文前 n 行中每一个英文字母出现的次数,结果按次数降序排列,次数相同时,按字母表顺序输出。若 n 值大于短文行数,输出整篇文章中每一个英文字母出现的次数(大写字母按小写字母统计)。 The Old Man and the Sea.txt

n = int(input())   # 输入需要统计的行数n
freq = {}   # 创建一个空字典用来存储字母出现的次数
f=open("step2/The Old Man and the Sea.txt", "r")   # 打开文本文件
for i, line in enumerate(f):   # 遍历每一行
    if i >= n:   # 如果行数大于等于n,则退出循环
        break
    for c in line:   # 遍历每一个字符
        if c.isalpha():   # 如果是字母
            freq[c.lower()] = freq.get(c.lower(), 0) + 1   # 将字母转换为小写并统计出现次数,加入字典中
freq_list = sorted(freq.items(), key=lambda x: (-x[1], x[0]))   # 对字典按照出现次数降序排序,如果出现次数相同,则按照字母表顺序排序
for item in freq_list:   # 遍历字典
    print("{} 的数量是 {:>3} 个".format(item[0], item[1]))   # 输出字母和出现次数
for c in 'abcdefghijklmnopqrstuvwxyz':   # 遍历所有小写字母
    if c not in freq:   # 如果字母没有出现过
        print("{} 的数量是 {:>3} 个".format(c, 0))   # 输出字母和0次出现

第2关:统计文章字符数

读取附件中的文件(utf-8编码),统计并输出文章的前 n 行里共有多少字符(标点符号及换行符按字符统计),以及有多少个不重复的字符? The Great Learning.txt

def readFile(filename, num):
    with open(filename, 'r', encoding='utf-8') as file:  # 只读模式打开文件
        content = file.readlines()  # 文件全部内容读取出来放入列表中,每个元素为一行字符串
    txt = ''.join(content[:num])  # 列表的前num行连接为字符串
    return len(txt), len(set(txt))  # 以元组形式返回字符串长度和集合长度
 
 
if __name__ == '__main__':
    num = int(input())  # 输入读取文件行数
    name = 'step3/The Great Learning.txt'  # 文件名
    content = readFile(name, num)  # 传入文件和行数
    print(*content)  # 将返回的元组解包输出

第3关:查询高校信息

附件 'university.csv' 中包含北京主要高校的序号、学校名称、学校标识码、主管部门、所在地、办学层次、备注等信息,以逗号分隔符。 参考提示代码,将文件内容逐行读取到列表中,根据用户输入的学校名,查询学校信息并输出。 university.csv

 示例

输入: 北京大学
输出: 序号,学校名称,学校标识码,主管部门,所在地,办学层次,备注 1,北京大学,4111010001,教育部,北京市,本科,

s=input().strip() #输入检索词
with open('step4/university.csv', 'r', encoding='utf-8') as f:
    lines = f.read().split("\n")

print(lines[0].strip())
for i in lines:#遍历每一行
    if len(i) > 0:
        univers=i.split(",")[1]#拆分列表,得到学校
    if s in univers:#如果这一行有关键词
        print(i)

第4关:查询高校名

附件'university.csv'中包含北京主要高校的序号、学校名称、学校标识码、主管部门、所在地、办学层次、备注等信息,以逗号分隔符。 参考提示代码,将文件内容逐行读取到列表中,根据用户输入一个关键字,查询学校名称包含用户输入关键字的学校名并输出。 university.csv

示例

输入: 中央
输出: 中央财经大学 中央音乐学院 中央美术学院 中央戏剧学院 中央民族大学

name = input()
with open('step5/university.csv','r',encoding='utf-8') as Uname:
    ls = Uname.read().split('\n')
for line in ls:
    university_name = line.split(',')[1]
    if name in university_name:
        print(university_name)

第5关:通讯录读取

任务描述

info.csv 读取附件中的csv文件(通讯录信息),放入字典中(后两项以列表形式做为字典的值),并依次输出其中的信息。文件内数据不需要修改,输出时数据之间以空格间隔。 编码格式使用utf-8 输入‘A’时,按行输出文件信息 输入‘D’时,直接输出字典内容 输入其他数据时,输出“ERROR”

s = input()
if s =="A":
    with open('step6/info.csv','r',encoding='utf-8') as f:
        txt = f.read()
        txt = txt.replace(","," ")
        print(txt)
elif s =="D":
    with open('step6/info.csv','r',encoding='utf-8') as f:
        txt = f.readlines()
        dic = {}
        for line in txt:
            lis = list(line.strip().split(','))
            dic[lis[0]] = lis[1:]
        print(dic)
else:
    print('ERROR')   

第6关:JSON转列表

任务描述

读取附件中的JSON文件,转为列表输出。 score1034.json

示例

输入: 2 输出:
[['姓名', '学号', 'C', 'C++', 'Java', 'Python', 'C#', '总分'], ['刘雨', '0121701100507', '20', '20', '20', '16', '20', '96']]

import json
with open('step7/score1034.json','r',encoding='utf-8') as f:
    lis1 = json.loads(f.read())
    lis2 = [['姓名', '学号', 'C', 'C++', 'Java', 'Python', 'C#', '总分']]
    for i in lis1:
        lis2.append(list(i.values()))
n = int(input())
print(lis2[:n])

第7关:利用数据文件统计成绩

利用附件中的成绩数据进行成绩统计,根据总分进行升序排序后,输出总分最低分和最高分,按总分升序输出前n名同学和后n名同学成绩信息(n为非负数,当n大于数据行数时,按实际行数输出),输出每题的平均成绩。 (注:数据文件中最后一列是总分,第4-9列每列为一道题的成绩,打开与关闭文件代码已经给出) 成绩单.csv

n = int(input())
ls1 = []
ls2 = []
with open('step8/成绩单.csv', 'r', encoding='utf-8') as f:
    for line in f.readlines():
        line = line.strip('\n')
        ls = list(line.split(','))
        ls1.append(ls)
 
ls1.sort(key=lambda x: eval(x[9]))
 
print('最低分{}分,最高分{}分'.format(ls1[0][9], ls1[len(ls1) - 1][9]))
if n <= len(ls1):
    print(ls1[:n])
    print(ls1[(len(ls1) - n):])
else:
    print(ls1)
    print(ls1)
for j in range(3, 9):
    s = 0
    for i in ls1:
        s = s + eval(i[j])
        a = s / len(ls1)
    ls2.append(eval('%.2f' % a))
print(ls2)
 

第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):#用于筛选出概率大于等于80%,返回列表
    ls = []
    with open(filename,"r") as fp:
        s = fp.readline()
        s = fp.readline()
        while s:
            l = s.strip().split(",")
            if eval(l[-1])>=0.8:
                ls.append(l)
            s = fp.readline()
    return ls
def readfile2(filename):#用于筛选出概率大于等于90%以及小于等于70%,返回列表
    ls1 = []
    ls2 = []
    with open(filename,"r") as fp:
        s = fp.readline()
        s = fp.readline()
        while s:
            l = s.strip().split(",")
            if eval(l[-1])>=0.9:
                ls1.append(l)
            if eval(l[-1])<=0.7:
                ls2.append(l)
            s = fp.readline()
    return ls1,ls2
    
    
n = input()
filename = "step9/admit2.csv"
if n=='1':
    ls = readfile1(filename)
    cnt = 0#用于记录排名大于4的个数
    for row in ls:
        if eval(row[1])>=4:
            cnt += 1
    print("Top University in >=80%%:%.2f%%"%(cnt/len(ls)*100))
elif n == 'Research':
    ls1,ls2 = readfile2(filename)
    cnt1 = len([i for i in ls1 if i[-4] == '1'])#大于90%,且有研究经历的个数
    cnt2 = len([i for i in ls2 if i[-4] == '1'])#小于70%,且有研究经历的个数
    print("Research in >=90%%:%.2f%%"%(cnt1/len(ls1)*100))
    print("Research in <=70%%:%.2f%%"%(cnt2/len(ls2)*100))
elif n=='2':
    ls = readfile1(filename)
    l = []#保存所有TOEFL分数
    for i in ls:
        l.append(float(i[3]))
    print("TOEFL Average Score:%.2f"%(sum(l)/len(l)))
    print("TOEFL Max Score:%.2f"%max(l))
    print("TOEFL Min Score:%.2f"%min(l))
elif n=='3':
    ls = readfile1(filename)
    l = []#保存所有绩点分数
    for i in ls:
        l.append(float(i[-5]))
    print("CGPA Average Score:%.3f"%(sum(l)/len(l)))
    print("CGPA Max Score:%.3f"%max(l))
    print("CGPA Min Score:%.3f"%min(l))
else:
    print("ERROR")

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

任务描述

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

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

def maxname(n):  # 输出名字最长的十本书,长度相同以现价从高到低排序
    ls.sort(key=lambda x: (len(x[1]), eval(x[3])), reverse=True)
    for i in ls[:n]:
        print(i[1])


def minname(n):  # 输出名字最短的十本书
    ls.sort(key=lambda x: (len(x[1])))
    for i in ls[:n]:
        print(i[1])


def priceNow():  # 现价最高和最低
    l = sorted(ls, key=lambda x: eval(x[3]), reverse=True)
    for i in l[0][:-3]:
        print(i)
    for i in l[-1][:-3]:
        print(i)


def priceOrgin():  # 原价最高和最低
    l = sorted(ls, key=lambda x: eval(x[3]), reverse=True)
    for i in l[0][:-3]:
        print(i)
    for i in l[-1][:-3]:
        print(i)


def number():
    print(len(ls))


def maxcomment():  # 评论数量多的书籍前10
    l = sorted(ls, key=lambda x: eval(x[-2][:-3]), reverse=True)
    for i in l[:10]:
        print(i[1], i[-2])


def mincomment():  # 评论数量少的书籍前10
    l = sorted(ls, key=lambda x: eval(x[-2][:-3]))
    for i in l[:10]:
        print(i[1], i[-2])


def rank():
    n = input()
    for i in ls:
        if n == i[0]:
            for j in i:
                print(j)
            break


with open('step10/CBOOK.csv', 'r') as f:
    ls = []
    for i in f.readlines()[1:]:
        ls.append(i.strip().split(','))

c = input().lower()
if c == 'record':
    number()
elif c == 'rank':
    rank()
elif c == 'maxname':
    n=eval(input())
    maxname(n)
elif c == 'minname':
    n = eval(input())
    minname(n)
elif c == 'nprice':
    priceNow()
elif c == 'oprice':
    priceOrgin()
elif c == 'maxcomment':
    maxcomment()
elif c == 'mincomment':
    mincomment()
else:
    print('无数据')

到了这里,关于Python第九章作业(初级)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • linux统计目录文件数量

    1、当前文件夹及子文件夹的数量:         ls -lR | grep \\\"^d\\\" | wc -l 2、当前文件及子目录文件夹的数量:         ls -lR | grep \\\"^-\\\" | wc -l 3、当前目录某文件的数量:         find . -name filename | wc -l 4、当前目录下所有目录文件的list及数量:         find . -name \\\"*\\\" list.txt     

    2024年02月08日
    浏览(46)
  • Linux 统计目录下文件数量的方法

    1、统计当前目录下文件的个数(不包括目录) 2、统计当前目录下文件的个数(包括子目录) 3、查看某目录下文件夹(目录)的个数(包括子目录) 4、统计当前文件夹下叫某某的文件的数量 5、统计当前文件夹下指定类型的文件的数量 例如这里需要找 js 文件的数量:

    2024年02月13日
    浏览(50)
  • Python之第九章 内置模块

    目录 第九章 内置模块 1.math模块 1.查看: 2.常用方法: 2.random模块 1.查看: ​2.例: 3.random(a,b) 4.random.sample(range(0,20),10) 3.os模块与os.path模块 1.作用 2.目录 3.os模块与操作系统的关系 4.路径 5.判断目录是否存在 6.创建目录 7.删除目录 8.文件或目录的重命名 9.获取文件信息 10.常见

    2024年02月11日
    浏览(33)
  • python学习笔记:第九章异常

    python使用异常对象来表示异常状态,并在遇到错误时引发异常。异常对象未被处理,程序将终止并显示一条错误信息。 我们可以通过各种方法引发和捕获错误,并采取对应措施。 自主地引发异常 我们通过预测异常可能发生的位置,通过raise语句主动抛出异常,用except语句来

    2024年02月15日
    浏览(42)
  • Python基础教程:第九章_Python异常模块与包

    从现在开始,让我们来进入到新的章节, Python 异常模块与包的内容学习。本章节我们主要分为 6 部分进行讲解,包含了 Python 异常的相关操作以及 Python 的模块操作, Python 的包操作和安装第三方 Python 包的相关操作。 学习目标 了解异常的概念 什么是异常 当检测到一个错误

    2024年02月07日
    浏览(103)
  • 使用 Python 和 Pygame 制作游戏:第九章到第十章

    原文: inventwithpython.com/pygame/chapter9.html 译者:飞龙 协议:CC BY-NC-SA 4.0           推星星是 Sokoban 或“箱子推动者”的克隆。玩家位于一个房间,里面有几颗星星。房间中的一些瓷砖精灵上有星星标记。玩家必须想办法将星星推到有星星标记的瓷砖上。如果墙壁或其他星星

    2024年01月22日
    浏览(74)
  • Python第四章作业(初级)

    任务描述 本关任务:编写一个无参无返回值函数的小程序。 相关知识 为了完成本关任务,你需要掌握: 无参无返回值函数 无参无返回值函数 定义一个无参数、无返回值的函数 print_hi_human(),调用函数时可以让计算机向世界发出问候,在函数中输出“人类,你好!”。‪‬

    2024年02月02日
    浏览(111)
  • python第三章作业(初级)

    任务描述 输入三个数a,b,c, 判断能否以它们为三个边长构成直角三角形。若能,输出YES,否则输出NO。 输入格式‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬ 输入包括三行,每行

    2023年04月10日
    浏览(44)
  • Python第八章作业(初级)

    任务描述 读取附件是一篇英文短文,请编写程序统计这篇短文前 n 行中每一个英文字母出现的次数,结果按次数降序排列,次数相同时,按字母表顺序输出。若 n 值大于短文行数,输出整篇文章中每一个英文字母出现的次数(大写字母按小写字母统计)。 输入格式 输入一个

    2024年02月06日
    浏览(42)
  • Python第一章作业(初级)

    Python 可以方便的实现计算器的功能。数学意义上的加、减、乘、除在Python中分别以符号“+、-、*、/”表示。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪

    2024年02月05日
    浏览(69)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包