python:练习:2

1.题目:统计一篇英文文章中每个单词出现的次数,并按照出现次数排序输出。

示例输入:

text = "Python is an interpreted, high-level, general-purpose programming language. Created by Guido van Rossum and first released in 1991, Python's design philosophy emphasizes code readability with its notable use of significant whitespace. Its language constructs and object-oriented approach aim to help programmers write clear, logical code for small and large-scale projects."

示例输出:

[('and', 2), ('code', 2), ('Python', 2), ('its', 2), ('an', 1), ('interpreted,', 1), ('high-level,', 1), ('general-purpose', 1), ('programming', 1), ('language.', 1), ('Created', 1), ('by', 1), ('Guido', 1), ('van', 1), ('Rossum', 1), ('first', 1), ('released', 1), ("Python's", 1), ('design', 1), ('philosophy', 1), ('emphasizes', 1), ('readability', 1), ('with', 1), ('notable', 1), ('use', 1), ('of', 1), ('significant', 1), ('whitespace.', 1), ('Its', 1), ('language', 1), ('constructs', 1), ('object-oriented', 1), ('approach', 1), ('aim', 1), ('to', 1), ('help', 1), ('programmers', 1), ('write', 1), ('clear,', 1), ('logical', 1), ('for', 1), ('small', 1), ('large-scale', 1), ('projects.', 1)]

text = ("Python is an interpreted, is a high-level, general-purpose programming language. Created by Guido van Rossum and first released in 1991")

#将文本转换为小写,并且将标点符号转换为空格
str1=text.lower()
str1=text.replace(',',' ')
str1=text.replace('.',' ')

#将文本按照空格分隔成为单词列表
list1=str1.split(' ')

#统计每个单词出现的次数
dict1={}
for zimu in list1:
    if zimu in dict1:
        dict1[zimu]+=1
    else:
        dict1[zimu]=1

#按照出现的次数排序

先将字典转化成有序序列
print(sorted(dict1.items(),key=lambda x:x[1],reverse=True))

2.题目:某小区有3栋楼房,每栋楼房有5个住户,每个住户的姓名、电话号码和房间号都不同,请编写程序将这些信息存储在适当的组合数据类型中,并输出每栋楼房的住户信息。


building_1 = [
    ["
张三", 11111111, 101],
    ["李四", 11111112, 102],
    ["王五", 11111113, 103],
    ["赵六", 11111114, 104],
    ["孙七", 11111115, 105]
]

building_2 = [
    ["周八", 22222221, 201],
    ["吴九", 22222222, 202],
    ["郑十", 22222223, 203],
    ["王十一", 22222224, 204],
    ["李十二", 22222225, 205]
]

building_3 = [
    ["张十三", 33333331, 301],
    ["刘十四", 33333332, 302],
    ["陈十五", 33333333, 303],
    ["杨十六", 33333334, 304],
    ["黄十七", 33333335, 305]
]

dict1 = {"1号楼": building_1,"2号楼": building_2,"3号楼": building_3
}


for building_name, residents in dict1.items():

#每个键是一个列表,依次取出每个键,即列表
    print(f"{building_name} 的住户信息:")
    # 遍历每栋楼中的住户
    for resident in residents:
        name, phone, room = resident
        print(f"姓名: {name}, 电话号码: {phone}, 房间号: {room}")
    print()

3.题目:计算一组数据的频率分布,在统计学中,频率分布是一种描述一组数据分布情况的方法。它将数据按照数值大小分成若干个区间,然后统计每个区间内数据的个数,最后绘制成柱状图或直方图。现在给定一组数据,需要编写程序计算它的频率分布。给定一组数据,例如:

data = [3, 1, 4, 2, 5, 3, 2, 3]

输出样式:

区间    频数    频率

0-1     1       0.125

1-2     2       0.25

2-3     3       0.375

3-4     1       0.125

4-5     1       0.125

5-6     0       0.0

data = [3, 1, 4, 2, 5, 3, 2, 3]
total = len(data)
max_val = max(data)
min_val = min(data)

#算出data区间的范围
h = max_val - min_val + 1

#给出一个空的字典用于比较
dict1 = {}
for num in data:
    if num in dict1:
        dict1[num] += 1
    else:
        dict1[num] = 1
print(dict1)

# {3: 3, 1: 1, 4: 1, 2: 2, 5: 1}


print("区间    频数      频率")
 

#区间
for i in range(h):   # h的范围从0-4
    left = min_val + i
    right = left + 1

#count 频率即要获得字典dict1里的value

#字典.get(键,提示信息),根据键获得对应的值
    count = dict1.get(left, 0)

  f = count / total
    print(f"{left}-{right}     {count}       {f}")

4.题目:学生成绩管理系统

现有学生成绩数据如下(以字符串形式提供),需要对数据进行处理并输出指定统计信息:

data="""
张三,20210001,数学:85,语文:90,英语:88
李四,20210002,数学:78,语文:85,英语:92,编程:88
王五,20210003,数学:92,语文:88,英语:85,编程:95,数据库:89
赵六,20210002,数学:88,语文:82,英语:89,编程:85 
周七,20210004,数学:75,语文:80,英语:85
"""#
注意:学号重复(模拟数据错误)

要求:

数据清洗与存储

  1. 将每行数据按逗号分割,处理为字典结构,键为学号(需去重,后出现的重复学号覆盖之前的)。
  2. 每个学号对应的 value 是一个字典,包含:
  • 姓名(字符串)
  • 课程成绩(列表,元素为元组 (课程名, 成绩),例如 ("数学", 85)

统计功能

  1. 计算每个学生的平均分(保留两位小数),并将结果存入学生字典的 平均分 字段。
  2. 统计所有课程的选修人数(使用集合去重课程名,避免同一学生重复选修同一课程)。
  3. 找出每门课程的最高分及其对应的学生姓名(可能有多个学生并列最高分)。

输出结果

  1. 打印每个学生的完整信息(姓名、学号、课程成绩、平均分)。
  2. 打印课程统计信息:课程名、选修人数、最高分、最高分学生列表。

data = """

张三,20210001,数学:85,语文:90,英语:88

李四,20210002,数学:78,语文:85,英语:92,编程:88

王五,20210003,数学:92,语文:88,英语:85,编程:95,数据库:89

赵六,20210002,数学:88,语文:82,英语:89,编程:85

周七,20210004,数学:75,语文:80,英语:85

"""

#分析可知应该是两个字

students = {}  # 外层字典,学号为键

course_stats = {}  # 课程统计字典,键为课程名

# 1. 数据清洗与存储

# splitlines():该方法专门用于按行分割字符串,它能识别多种行分隔符,像 \n\r\r\n 等,且无需手动指定分隔符。

for line in data.strip().splitlines():

    parts = [p.strip() for p in line.split(',')]

    name, sid = parts[0], parts[1]

scores_part = parts[2:]

    # 处理课程成绩:分割为 (课程名, 成绩) 元组列表

    scores = []

    for item in scores_part:

        course, score = item.split(':')

        scores.append((course, int(score)))  # 成绩转为整数

    # 去重学号(后出现的覆盖之前的)

    students[sid] = {

        '姓名': name,

        '课程成绩': scores,

        '平均分': 0.0  # 后续计算

    }

# 2. 计算每个学生的平均分

for sid, student in students.items():

    total = sum(score for _, score in student['课程成绩'])

    avg = total / len(student['课程成绩'])

student['平均分'] = round(avg, 2)  # 保留两位小数

 

# 3. 统计课程信息(选修人数、最高分、最高分学生)

for sid, student in students.items():

    name = student['姓名']

    for course, score in student['课程成绩']:

        # 初始化课程统计

        if course not in course_stats:

            course_stats[course] = {

                '选修人数': 0,

                '最高分': -1,

                '最高分学生': []

            }

        course_stat = course_stats[course]

        # 统计选修人数(每个学生每门课程只算一次,即使重复出现也不重复计数)

        course_stat['选修人数'] += 1

        # 更新最高分及对应学生

        if score > course_stat['最高分']:

            course_stat['最高分'] = score

            course_stat['最高分学生'] = [name]

        elif score == course_stat['最高分']:

            course_stat['最高分学生'].append(name)

# 4. 打印结果(学生信息)

print("=== 学生信息 ===")

for sid, student in students.items():

    print(f"学号:{sid},姓名:{student['姓名']}")

    print(f"课程成绩:{student['课程成绩']}")

    print(f"平均分:{student['平均分']:.2f}")

print("-" * 30)

# 5. 打印结果(课程统计)

print("\n=== 课程统计 ===")

for course, stat in course_stats.items():

    print(f"课程:{course}")

    print(f"选修人数:{stat['选修人数']}")

    print(f"最高分:{stat['最高分']}")

    print(f"最高分学生:{', '.join(stat['最高分学生'])}")

    print("-" * 30)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/77691.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI Agent 孵化器?开源框架CAMEL

简介 CAMEL(Communicative Agents for Mind Exploration of Large Scale Language Model Society)是一个开源框架,大语言模型多智能体框架的先驱者。旨在通过角色扮演和自主协作,探索大语言模型(LLM)在多智…

关于插值和拟合(数学建模实验课)

文章目录 1.总体评价2.具体的课堂题目 1.总体评价 学校可以开设这个数学建模实验课程,我本来是非常的激动地,但是这个最后的上课方式却让我高兴不起哦来,因为老师讲的这个内容非常的简单,而且一个上午的数学实验,基本…

LayerSkip: Enabling Early Exit Inference and Self-Speculative Decoding

TL;DR 2024 年 Meta FAIR 提出了 LayerSkip,这是一种端到端的解决方案,用于加速大语言模型(LLMs)的推理过程 Paper name LayerSkip: Enabling Early Exit Inference and Self-Speculative Decoding Paper Reading Note Paper…

解决ktransformers v0.3 docker镜像中 operator torchvision::nms does not exist 问题

问题背景 更新ktransformers docker镜像到v0.3版本后(之前为v0.2.4post1),使用更新前启动命令无法正确启动服务,提示以下错误: Traceback (most recent call last):File "/workspace/ktransformers/ktransforme…

如何系统学习音视频

学习音视频技术涉及多个领域,包括音频处理、视频处理、编码解码、流媒体传输等。 第一阶段:基础知识准备 目标:掌握音视频学习所需的计算机科学和数学基础。 计算机基础 学习计算机网络基础(TCP/IP、UDP、HTTP、RTSP等协议&#…

TiDB 可观测性最佳实践

TiDB 介绍 TiDB,由 PingCAP 公司自主研发的开源分布式关系型数据库,是一款创新的 HTAP 数据库产品,它融合了在线事务处理(OLTP)和在线分析处理(OLAP)的能力,支持水平扩容和缩容&…

使用FreeRTOS解决单片机串口异步打印

单片机串口异步打印 文章目录 单片机串口异步打印前言设计思路准备队列创建完整代码 总结 前言 🌊在单片机开发中串口的异步打印异步打印允许单片机在执行其他任务的同时进行打印操作,无需等待打印完成后再继续执行后续代码,避免了在多处调用…

代码颜色模式python

1. CMYK(印刷场景) 例子:某出版社设计书籍封面时,使用 Adobe Illustrator 绘制图案。 红色封面的 CMYK 值可能为:C0, M100, Y100, K0(通过洋红和黄色油墨混合呈现红色)。印刷前需将设计文件转…

HarmonyOS NEXT 诗词元服务项目开发上架全流程实战(二、元服务与应用APP签名打包步骤详解)

在HarmonyOS应用开发过程中,发布应用到应用市场是一个重要的环节。没经历过的童鞋,首次对HarmonyOS的应用签名打包上架可能感觉繁琐。需要各种秘钥证书生成和申请,混在一起分不清。其实搞清楚后也就那会事,各个文件都有它存在的作…

【BotSharp框架示例 ——实现聊天机器人,并通过 DeepSeek V3实现 function calling】

BotSharp框架示例 ——实现聊天机器人,并通过 DeepSeek V3实现 function calling 一、一点点感悟二、创建项目1、创建项目2、添加引用3、MyWeatherPlugin项目代码编写4、WeatherApiDefaultService项目代码编写5、WebAPI MyWeatherAPI 的项目代码编写6、data文件夹中…

百度CarLife实现手机车机无缝互联

百度CarLife是百度推出的智能车联网解决方案,通过手机与车机互联技术,为用户提供安全便捷的车载互联网服务体验。 CarLife 实现手机与车机屏幕的无缝互联,让应用内容同步至车载系统,减少驾驶过程中操作手机的频率,提升…

基于STM32的虚线绘制函数改造

改造前: uint16_t DrawLine(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2) { // GUI_DrawLine( x1, y1, x2, y2); // return 1;int16_t deltaX, deltaY;int16_t error, stepErrorLT, stepErrorGE;int16_t stepX, stepY;int16_t steep;int16_t…

Java高频面试之并发编程-10

hello啊,各位观众姥爷们!!!本baby今天来报道了!哈哈哈哈哈嗝🐶 面试官:ThreadLocalMap 怎么解决 Hash 冲突的? ThreadLocalMap 是 ThreadLocal 的核心实现,它采用 开放…

AI应用实战:Excel表的操作工具

有个小需求是这样的,需要在一份数据表里,将1000多个客户的月报数据分别单独截图存档,有客户需要的时候就要发给客户,截图下来的也是以客户为命名,这样查找时也比较容易匹配上。 在没有写工具之前,以往财务…

使用 DoH 查询域名 —— 以 core.tantanapp.com 为例的实战分析

前言 在现代 iOS 应用中,为了确保 DNS 查询的隐私和完整性,我们可以使用 DoH(DNS over HTTPS) 来查询域名信息。 本文将以 https://cloudflare-dns.com/dns-query?namecore.tantanapp.com&typeA 为例,通过 Postm…

Python----卷积神经网络(卷积为什么能识别图像)

一、卷积的概念 卷积是一种数学运算,通常用于信号处理和图像分析。在卷积神经网络中,卷积操作用于提取输入数据(如图像)中的特征。通过将输入数据与卷积核(滤波器)进行卷积运算,CNN能够识别图像…

linux FTP服务器搭建

FTP服务器搭建 系统环境:ubuntu 搭建方式:win系统下通过ssh连接ubuntu,搭建FTP服务 一、ssh连接 ssh -p 端口 用户名IP ssh -p 22 ubuntu192.168.1.109 密码:ubuntu123456 二、安装配置FTP服务器 1、安装 sudo apt install v…

语音合成之十韵律之美:TTS如何模拟语音的节奏和语调

韵律之美:TTS如何模拟语音的节奏和语调 1. 引言:韵律在语音合成中的重要性1.1 追求自然的TTS:超越可懂度1.2 定义韵律:语音的音乐1.3 韵律为何重要:传递意义、情感与自然度 2. TTS韵律建模的基础技术2.1 利用文本&…

基于强化学习的用于非刚性图像配准的引导式超声采集|文献速递-深度学习医疗AI最新文献

Title 题目 Guided ultrasound acquisition for nonrigid image registration usingreinforcement learning 基于强化学习的用于非刚性图像配准的引导式超声采集 01 文献速递介绍 超声成像通常用于引导手术和其他医疗程序,在这些过程中,临床医生会持…

数据库中DDL、DML、DCL的区别是什么?

数据库中DDL、DML、DCL的区别是什么? 在数据库的使用过程中,SQL(结构化查询语言)常常被用来执行不同的操作,主要分为三类:DDL(数据定义语言)、DML(数据操纵语言&#xf…