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

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,则退出循环breakfor 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 = 0for 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 NoGRE ScoreTOEFL ScoreUniversity RatingSOPLORCGPAResearchChance of Admit
编号1-500GRE分数托福分数本科大学排名分个人陈述分数推荐信分数本科绩点研究经历(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,ls2n = input()
filename = "step9/admit2.csv"
if n=='1':ls = readfile1(filename)cnt = 0#用于记录排名大于4的个数for row in ls:if eval(row[1])>=4:cnt += 1print("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本书的名字,按书名长度降序排序,格式见示例 非以上输入,输出'无数据' 下列示例仅表明输入输出格式,输出的数据不是本题答案数据

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():  # 评论数量多的书籍前10l = sorted(ls, key=lambda x: eval(x[-2][:-3]), reverse=True)for i in l[:10]:print(i[1], i[-2])def mincomment():  # 评论数量少的书籍前10l = 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)breakwith 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第八章作业(初级)

目录 第1关&#xff1a;统计字母数量 第2关&#xff1a;统计文章字符数 第3关&#xff1a;查询高校信息 第4关&#xff1a;查询高校名 第5关&#xff1a;通讯录读取 第6关&#xff1a;JSON转列表 第7关&#xff1a;利用数据文件统计成绩 第8关&#xff1a;研究生录取数据…...

chatgpt赋能python:Python中如何取消列表

Python中如何取消列表 在Python中使用列表是一种非常常见的数据结构&#xff0c;它允许我们在其中存储任意数量的元素&#xff0c;并且可以非常容易地进行遍历和操作。但是&#xff0c;有时候我们需要从列表中删除元素。这个过程并不难&#xff0c;但是有些细节需要注意。本文…...

Java中List排序的3种方法

在某些特殊的场景下&#xff0c;我们需要在 Java 程序中对 List 集合进行排序操作。比如从第三方接口中获取所有用户的列表&#xff0c;但列表默认是以用户编号从小到大进行排序的&#xff0c;而我们的系统需要按照用户的年龄从大到小进行排序&#xff0c;这个时候&#xff0c;…...

flutter-读写二进制文件到设备

看了下很多文章&#xff0c;本地文件存储都只有存储txt文件&#xff0c;我们探索下存储二进制文件吧。 保存二进制文件到设备硬盘上。 我们保存一个图片到手机本地上&#xff0c;并读取展示图片到app上。 以百度logo图为例子 写入图片 逻辑如下&#xff1a; 获取本地路径 -&g…...

C语言基础知识:内存分配

目录 内存分配原理 内存分配方法 静态内存分配 动态内存分配 MALLOC() CALLOC() 内存释放 注意事项 在C语言中&#xff0c;内存分配是非常重要的一个概念&#xff0c;因为C语言中没有内置的垃圾回收机制&#xff0c;需要我们手动管理内存的分配和释放。下面我们来详细讲…...

【Simulink】示波器图形数据导入Matlab重新绘图(论文)

版本&#xff1a;Matlab2019b 效果 示波器波形图片&#xff1a; 黑色背景&#xff0c;而且坐标轴字体较小&#xff0c;不方便修改&#xff0c;不能直接用在论文上面 对比 Matlab 绘图&#xff1a; 接下来介绍如何设置~ Simulink 设置 选择需要导入的示波器数据 点击 Vi…...

汇编调试及学习

汇编调试 打印寄存器的值 打印内存地址 打印8字节&#xff0c;就是64位 打印格式 是从低位取过来的 b 字节 h 双字节 w四字节 g八字节 前变基 后变基 。 后变基这个变基会发生变化的。前变基变基不会发生变化需要用&#xff01;号。 前变基 &#xff0c; 加了&#xff0…...

Linux - 第19节 - 网络基础(传输层二)

1.TCP相关实验 1.1.理解listen的第二个参数 在编写TCP套接字的服务器代码时&#xff0c;在进行了套接字的创建和绑定之后&#xff0c;需要调用listen函数将创建的套接字设置为监听状态&#xff0c;此后服务器就可以调用accept函数获取建立好的连接了。其中listen函数的第一个参…...

web实现日历、阳历农历之间相互转换、npm、push、unshift、includes、innerHTML

文章目录 1、原生web实现效果图htmlJavaScriptstyle vue2实现htmlJavaScript 1、原生web实现 效果图 html <div class"box"><div class"week"><div>星期日</div><div>星期一</div><div>星期二</div><…...

GcExcel v6.1 支持新的 ‘.sjs‘ 模板文件 ‘.xltx‘ 格式 Crack

GrapeCity Documents for Excel (GcExcel) v6.1 版本现已上线&#xff01;该版本支持新的 SpreadJS .sjs 文件格式和 Excel 模板文件 .xltx 格式。此外&#xff0c;GcExcel 支持更多的SpreadJS兼容性功能和对 GcDataViewer 的多项增强。看看下面的主要亮点。 导入/导出 Spread…...

面试官:MySQL自增主键一定是连续的吗?

测试环境&#xff1a; MySQL版本&#xff1a;8.0 数据库表&#xff1a;T &#xff08;主键id&#xff0c;唯一索引c&#xff0c;普通字段d&#xff09; 如果你的业务设计依赖于自增主键的连续性&#xff0c;这个设计假设自增主键是连续的。但实际上&#xff0c;这样的假设是错的…...

2023ACP世界大赛教育者论坛:让职业教育直面AI机遇与挑战

“AI技术的普及对创意行业和教育带来的影响和变革-2023 Adobe Certified Professional教育者论坛”在苏州西交利物浦大学成功举办。 本次论坛&#xff0c;由Adobe Certified Professional 世界大赛中国赛区组委会主办&#xff0c;联动了来自院校、海内外杰出的创意公司及国际知…...

Unity基础 音频组件以及音频播放

在游戏开发中&#xff0c;声音是一个重要的环节。Unity中的声音组件可以帮助开发者轻松地控制游戏中音频的播放、音量、循环等属性&#xff0c;从而实现更好的游戏体验。本文将详细介绍Unity声音组件的相关概念和技术&#xff0c;以及其在游戏、影视等领域的广泛应用和发展前景…...

SAP-MM-采购申请审批那些事!

1、ME55不能审批删除行项目的PR 采购申请审批可以设置行项目审批或抬头审批。如果设置为抬头审批时&#xff0c;ME55集中审批时&#xff0c;就会发现有些采购申请时不能审批的&#xff0c; 那么这些采购申请时真的不需要审批么&#xff1f;不是的&#xff0c;经过核对这些采购申…...

专业解读财务共享实现财务数智化转型的有效路径

近年来&#xff0c;随着数字经济的飞速发展&#xff0c;各大企业全面开启数智化转型之路&#xff0c;作为企业数智化转型的重要内容&#xff0c;财务数智化转型始于财务共享服务。然而&#xff0c;财务共享建设并不是一蹴而就的&#xff0c;如何通过财务共享实现财务数智化转型…...

九章云极DataCanvas公司诚邀您共享AI基础软件前沿技术盛宴

“杭州通用人工智能论坛暨AIIA人工智能产业发展大会”将于2023年5月30日-31日在杭州举办。本次人工智能产业发展大会由中国信息通信研究院、中国人工智能产业发展联盟主办&#xff0c;杭州城西科创大走廊管委会、杭州市经济和信息化局、杭州未来科技城管理委员会、人工智能关键…...

【高级语言程序设计(一)】第 10 章:文件

目录 一、文件概述 &#xff08;1&#xff09;文件定义 &#xff08;2&#xff09;文件命名 &#xff08;3&#xff09;文件分类 ① 按照文件的内容划分 ② 按照文件的组织形式划分 ③ 按照文件的存储形式划分 ④ 按照文件的存储介质划分 &#xff08;4&#xff09;文…...

Android 宿主启动插件中的Activity和Service

在宿主App中加载插件App中的四大组件&#xff0c;需要以下几个步骤&#xff1a; 1. 预先在宿主的AndroidManifest文件中声明插件中的四大组件 <?xml version"1.0" encoding"utf-8"?> <manifest xmlns:android"http://schemas.android.co…...

00后卷王自述,我真的很卷吗?

前段时间我去面试了一个软件测试公司&#xff0c;成功拿到了offer&#xff0c;薪资也从10k涨到了18k&#xff0c;对于工作都还没两年的我来说&#xff0c;还是比较满意的&#xff0c;毕竟有些工作了3到4年的可能还没有我的高。 在公司一段时间后大家都说我是卷王&#xff0c;其…...

真题详解(树的结点)-软件设计(八十四)

真题详解&#xff08;汇总&#xff09;-软件设计&#xff08;八十三)https://blog.csdn.net/ke1ying/article/details/130856130?spm1001.2014.3001.5501 COCOMOII估算不包括_____。 对象点 B.功能点 C.用例数 D.源代码行 答案&#xff1a;C 语法翻译是一种&#xff…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂&#xff08;如抗体、抑制肽&#xff09;在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上&#xff0c;高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术&#xff0c;但这类方法普遍面临资源消耗巨大、研发周期冗长…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性&#xff1a;电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中&#xff0c;电力载波技术&#xff08;PLC&#xff09;凭借其独特的优势&#xff0c;正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据&#xff0c;无需额外布…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库&#xff0c;获取股票数据&#xff0c;并生成TabPFN这个模型 可以识别、处理的格式&#xff0c;写一个完整的预处理示例&#xff0c;并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务&#xff0c;进行预测并输…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...