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.pswp.cn/web/77691.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/77691.shtml
英文地址,請注明出處:http://en.pswp.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…