【Python 基礎與實戰】從基礎語法到項目應用的全流程解析

(1)列表和元組的區別是什么?如何從列表創建元組?如何從元組創建列表?

列表和元組的區別:

  1. 可變性:列表是可變的,即可以對列表進行元素的增、刪、改操作。例如,可以使用append()方法添加元素,remove()方法刪除元素,通過索引修改元素值。而元組是不可變的,一旦創建,其元素內容和數量都不能改變,嘗試修改元組元素會引發錯誤。
  2. 語法表示:列表使用方括號[]來表示,如my_list = [1, 2, 3] ;元組使用圓括號()來表示,如my_tuple = (1, 2, 3) ,不過在創建只包含一個元素的元組時,需要在元素后面加逗號,如single_tuple = (1,) ,否則(1) 會被視為整數1
  3. 應用場景:由于列表的可變性,常用于需要頻繁修改數據的場景,如動態存儲用戶輸入的數據。元組的不可變性使其更適合存儲一些固定不變的數據,比如坐標值、函數的多個返回值等,同時元組還可作為字典的鍵,因為字典鍵要求是不可變類型。
  4. 性能:在創建相同內容的數據時,元組的創建時間和占用內存空間通常比列表小。因為列表除了存儲元素外,還需額外存儲長度、閑置位置等信息。

從列表創建元組 可以使用內置函數tuple() ,將列表作為參數傳入,即可將列表轉換為元組。

從元組創建列表 使用內置函數list() ,把元組作為參數傳入,就能將元組轉換為列表。

(2)下面代碼的錯誤是什么?

t=(1,2.3)
t.append(4)
t.remove(0)
t[0]=1

元組是不可變的,不能進行添加、刪除操作。

(3)下面的代碼正確嗎?

t1 = (1,2,3,7,9,0,5)
t2 = (1,2,5)
t1 = t2

正確,t2賦值給t1。

(4)給出下面代碼的輸出?

t1=(1,2,3,7,9,0,5)
t2=(1,3,22,7,9,0,5)
print(t1 == t2)
print(t1 != t2)
print(t1 > t2)
print(t1 < t2)

False
True
False
True

(5)列表、集合或元組能有不同類型的元素嗎?

列表和元組可以有不同類型的元素

集合里面的元素必須是可哈希的(即不可變類型)

(6)下面哪個集合是被正確創建的?

s ={1,3,4}
s ={{1,2},{4,5}}
s ={[1,2],[4,5]}
s ={(1,2),(4,5)}

1 4集合是被正確創建的

(7)給出下面代碼的輸出。

students ={"peter","john"}
print(students)
students.add("john")
print(students)
students.add("peterson")
print(students)
students.remove("peter")
print(students)

{‘peter’, ‘john’}
{‘peter’, ‘john’}
{‘peter’, ‘john’, ‘peterson’}
{‘john’, ‘peterson’}

(8)給出下面代碼的輸出。

student1 ={"peter""john""tim"}
student2 ={"peter","johnson""tim"}
print(student1.issuperset({"john"}))
print(studentl.issubset(student2))
print({123} > {124})
print({123} < {124})
print({12} < {124})
print({12} <= {124})

True
False
False
False
True
True

(9)給出下面代碼的輸出。

s1={1456}
s2={1367}
print(s1.union(s2))
print(s1 | s2)
print(s1.intersection(s2))
print(s1 & s2)
print(s1.difference(s2))
print(s1 - s2)
print(s1.symmetric_difference(s2))
print(s1 ^ s2)

{1, 3, 4, 5, 6, 7}
{1, 3, 4, 5, 6, 7}
{1, 6}
{1, 6}
{4, 5}
{4, 5}
{3, 4, 5, 7}
{3, 4, 5, 7}

(10)給出下面代碼的輸出。

set1 = {123}
set2 = {345}
set3 = set1 | set2
print(set1,set2,set3)
set3 = set1 - set2
print(set1,set2,set3)
set3=set1 & set2
print(set1,set2,set3)
set3=set1 ^ set2
print(set1,set2,set3)

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

(11)下面哪個字典是被正確創建的?

d={1:[12]3:[34]}
d={[12]:1[34]:3}
d={(12):1(34):3}
d={1:"john", 3:"peter"}
d={"john":1,"peter":3}

1 3 4 5被正確創建

(12)假設一個名為 students 的字典是 {“john”:3,“peter”:2}。下面的語句實現什么功能?

(a)	print(len(students))
(b)	print(students.keys())
(c)	print(students.values())
(d)	print(students.items())

(a) 打印字典student的長度:2

(b)打印字典的鍵:dict_keys([‘john’, ‘peter’])

?打印字典的值:dict_values([3, 2])

(d)打印字典的鍵值對:dict_items([(‘john’, 3), (‘peter’, 2)])

(13)給出下面代碼的輸出。

def main():d = {"red":4,"blue":1,"green":14,"yellow":2}print(d["red"])print(list(d.keys()))print(list(d.values))print("blue" in d)print("purple" in d)d["blue"] += 10print(d["blue"])main() 	#Call the main function

4
[‘red’, ‘blue’, ‘green’, ‘yellow’]
[4, 1, 14, 2]
True
False
11

(14)給出下面代碼的輸出。

def main():d = {}d["susan"]= 50d["jim"]= 45d["joan"]= 54d["susan"]= 51d["john"]= 53print(len(d))
main() #Call the main function

4

二、編程題

(15)學生成績統計

學校記錄了學生們多門課程的成績,每門課程成績以字典形式存儲,學生姓名作為鍵,成績作為值。現在需要統計每個學生的平均成績,并找出平均成績最高的學生。

# 每門課學生的成績
course_scores = [{'Alice': 85, 'Bob': 90, 'Charlie': 78},{'Alice': 92, 'Bob': 88, 'Charlie': 85},{'Alice': 79, 'Bob': 94, 'Charlie': 82}
]
# 每門課學生的成績
course_scores = [{'Alice': 85, 'Bob': 90, 'Charlie': 78},{'Alice': 92, 'Bob': 88, 'Charlie': 85},{'Alice': 79, 'Bob': 94, 'Charlie': 82}
]dic_course_scores = {}
#遍歷列表 即獲取每一組字典
for i in range(len(course_scores)):#遍歷字典 取每一組鍵值for key, values in course_scores[i].items():# 判斷當前學生是否在新字典中,如果不存在則記錄if key not in dic_course_scores:dic_course_scores[key] = values#存在 求新的平均值else:dic_course_scores[key] = (dic_course_scores[key] + values) / (i + 1)
#找出平均成績最高的學生姓名
max_key = max(dic_course_scores, key = dic_course_scores.get)print(f"每個學生的平均成績為{dic_course_scores}")
print(f"平均成績最高的學生是:{max_key}")

(16)商品庫存管理

一家商店有多個商品的庫存信息,以字典形式存儲,鍵為商品名稱,值為庫存數量。每天會有新的進貨和銷售記錄,需要更新庫存信息。如果庫存數量變為負數,則輸出警告信息。

# 初始貨物量
inventory = {'蘋果': 100, '香蕉': 80, '橙子': 120}
# 進貨/銷售記錄
transactions = [{'蘋果': -20, '香蕉': 30},{'橙子': -50, '蘋果': 10}
]
# 初始貨物量
inventory = {'蘋果': 100, '香蕉': 80, '橙子': 120}
# 進貨/銷售記錄
transactions = [{'蘋果': -220, '香蕉': 30},{'橙子': -50, '蘋果': 10, '西瓜': 50}
]for goods in transactions:# 遍歷交易中的商品和數量for fruits, num in goods.items():if fruits not in inventory:inventory[fruits] = 0# 更新inventory[fruits] += numfor fruit in inventory:# 檢查庫存if inventory[fruit] < 0:print(f"{fruit}庫存不夠,請及時補充!!!")
print(inventory)

(17)社交網絡好友關系【錄制講解】

視頻鏈接::https://meeting.tencent.com/crm/KDLyo5PXf2

在一個社交網絡中,用戶之間的好友關系用字典表示,鍵為用戶名稱,值為該用戶的好友集合。現在需要找出哪些用戶是所有用戶的共同好友。

# 好友關系表
friendships = {'Alice': {'Bob', 'Charlie', 'David'},'Bob': {'Alice', 'Charlie'},'Charlie': {'Alice', 'Bob', 'David'},'David': {'Alice', 'Charlie'}
}
# 好友關系表
friendships = {'Alice': {'Bob', 'Charlie', 'David'},'Bob': {'Alice', 'Charlie'},'Charlie': {'Alice', 'Bob', 'David'},'David': {'Alice', 'Charlie'}
}
for user in friendships.keys():friendships[user].add(user)common_friends = set(friendships[list(friendships.keys())[0]])
for friends in friendships.values():common_friends = common_friends & set(friends)
print(common_friends)

(18)在線游戲玩家組隊匹配

在線游戲中有多個玩家,每個玩家有不同的游戲角色和技能等級,用字典表示,鍵為玩家名,值為角色和技能等級的字典。現在要根據玩家的角色和技能等級進行組隊匹配,使每個隊伍的綜合實力盡量均衡。

# 玩家數據
players = {'Player1': {'Warrior': 80, 'Mage': 20},'Player2': {'Warrior': 30, 'Mage': 70},'Player3': {'Warrior': 60, 'Mage': 40},'Player4': {'Warrior': 40, 'Mage': 60}
}
# 玩家信息字典,鍵為玩家名,值為角色和對應技能等級的字典
game_players = {'Player1': {'Warrior': 80, 'Mage': 20},'Player2': {'Warrior': 30, 'Mage': 70},'Player3': {'Warrior': 60, 'Mage': 40},'Player4': {'Warrior': 40, 'Mage': 60}
}# 用于存儲每個玩家綜合實力的字典
player_power_dict = {}
# 計算每個玩家的綜合實力,即各角色技能等級之和
for gamer, skills in game_players.items():total_power = sum(skills.values())player_power_dict[gamer] = total_power# 分別提取玩家名列表和對應的綜合實力值列表
player_names = list(player_power_dict.keys())
player_powers = list(player_power_dict.values())# 使用冒泡排序對玩家按綜合實力從高到低排序
n = len(player_powers)
for i in range(n - 1):for j in range(0, n - i - 1):if player_powers[j] < player_powers[j + 1]:player_powers[j], player_powers[j + 1] = player_powers[j + 1], player_powers[j]player_names[j], player_names[j + 1] = player_names[j + 1], player_names[j]# 初始化左右指針,用于組隊
left_index = 0
right_index = len(player_names) - 1
# 進行組隊匹配,輸出組隊結果
while left_index < right_index:print({player_names[left_index]}, {player_names[right_index]})left_index += 1right_index -= 1

(19)餐廳菜品搭配分析

餐廳有多個菜品分類,每個分類有不同的菜品,用字典表示,鍵為分類名,值為菜品集合。現在要找出所有可能的菜品搭配,每個搭配包含主菜、配菜和飲品。

# 菜品分類信息
menu_categories = {'主菜': {'牛排', '披薩', '壽司'},'配菜': {'薯條', '沙拉', '烤蔬菜'},'飲品': {'可樂', '咖啡', '果汁'}
}
menu_categories = {'主菜': {'牛排', '披薩', '壽司'},'配菜': {'薯條', '沙拉', '烤蔬菜'},'飲品': {'可樂', '咖啡', '果汁'}
}for zhucai in menu_categories['主菜']:for peicai in menu_categories['配菜']:for drink in menu_categories['飲品']:print(f"主菜:{zhucai}, 配菜:{peicai}, 飲品:{drink}")

(20)科研項目人員分配優化【錄制講解】

視頻鏈接: https://meeting.tencent.com/crm/NbVzmYpJ5a

有多個科研項目,每個項目需要不同技能的人員,用字典表示,鍵為項目名,值為所需技能集合。同時有多個研究人員,每個人員具備的技能也用集合表示。現在要為每個項目分配合適的人員,使每個項目盡量滿足所需技能。

# 項目及技能需求
projects = {'ProjectA': {'Python', '數據分析', '機器學習'},'ProjectB': {'Java', '數據庫管理', '算法設計'},'ProjectC': {'C++', '圖像處理', '計算機視覺'}
}
# 人員及具備技能
researchers = {'Researcher1': {'Python', '數據分析'},'Researcher2': {'Java', '數據庫管理'},'Researcher3': {'C++', '圖像處理'},'Researcher4': {'機器學習', '算法設計', '計算機視覺'}
}
# 項目及技能需求
projects = {'ProjectA': {'Python', '數據分析', '機器學習'},'ProjectB': {'Java', '數據庫管理', '算法設計'},'ProjectC': {'C++', '圖像處理', '計算機視覺'}
}
# 人員及具備技能
researchers = {'Researcher1': {'Python', '數據分析'},'Researcher2': {'Java', '數據庫管理'},'Researcher3': {'C++', '圖像處理'},'Researcher4': {'機器學習', '算法設計', '計算機視覺'}
}
dic = {}
for key_pro, values_pro in projects.items():for key_res, values_res in researchers.items():if values_pro & values_res:if key_pro not in dic:dic[key_pro] = []dic[key_pro].append(key_res)
print(dic)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/81943.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/81943.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/81943.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Docker部署Zookeeper集群

簡介 ZooKeeper 是一個開源的分布式協調服務&#xff0c;由 Apache 軟件基金會開發和維護。它主要用于管理和協調分布式系統中的多個節點&#xff0c;以解決分布式環境下的常見問題&#xff0c;如配置管理、服務發現、分布式鎖等。ZooKeeper 提供了一種可靠的機制&#xff0c;…

【學習筆記】Sophus (Python) 使用文檔

以下是一份針對 Sophus 庫的 Python 使用文檔&#xff0c;涵蓋基礎概念、安裝方法、核心功能及代碼示例。內容圍繞 SO3&#xff08;3D旋轉群&#xff09;和 SE3&#xff08;3D剛體變換群&#xff09;展開&#xff0c;適合機器人學、SLAM、三維幾何等領域。 Sophus (Python) 使用…

計算機圖形學:(三)MVP變換擴展

Three.js WebGL允許把JavaScript和OpenGL 結合在一起運用&#xff0c;但使用WebGL原生的API來寫3D程序非常的復雜&#xff0c;同時需要相對較多的數學知識&#xff0c;對于前端開發者來說學習成本非常高。 Three.js是基于webGL的封裝的一個易于使用且輕量級的3D庫&#xff0c;T…

MySQL數據庫操作合集

一、SQL通用語法 ①SQL語句可以單行或多行書寫&#xff0c;以分號結尾。 ②SQL語句可以使用空格/縮進來增強語句可讀性。 ③MySQL數據庫的SQL語句不區分大小寫&#xff0c;關鍵字建議使用大寫。 ④注釋&#xff1a; 單行注釋&#xff1a; -- 注釋內容 或 # 注釋內容&#…

傳統工程項目管理與業財一體化管理的區別?

在工程項目管理領域&#xff0c;傳統管理模式與新興的業財一體化管理模式正在形成鮮明對比。隨著數字化轉型的加速&#xff0c;工程行業對高效、透明、協同的管理需求日益迫切。傳統工程項目管理依賴人工操作、分散系統和分模塊管理&#xff0c;難以應對復雜項目的全生命周期需…

敦煌網測評從環境搭建到風控應對,精細化運營打造安全測評體系

自養號測評&#xff0c;搶占流量為快速提升產品權重和銷量&#xff0c;很多賣家常采用自己養號補單測評的方式&#xff0c;技術搭建需要很多要素 一、硬件參數的關聯性 在我們使用設備進行注冊或操作賬號的過程中&#xff0c;系統會記錄下大量的系統與網絡參數&#xff0c;其中…

redis Pub/Sub 簡介 -16 (PUBLISH、SUBSCRIBE、PSUBSCRIBE)

Redis Pub/Sub 簡介&#xff1a;PUBLISH、SUBSCRIBE、PSUBSCRIBE Redis Pub/Sub 是一種強大的消息傳遞范例&#xff0c;可在應用程序的不同部分之間實現實時通信。它是構建可擴展和響應式系統的基石&#xff0c;允許組件在沒有直接依賴的情況下進行交互。本章將全面介紹 Redis…

JavaSE核心知識點03高級特性03-01(集合框架)

&#x1f91f;致敬讀者 &#x1f7e9;感謝閱讀&#x1f7e6;笑口常開&#x1f7ea;生日快樂?早點睡覺 &#x1f4d8;博主相關 &#x1f7e7;博主信息&#x1f7e8;博客首頁&#x1f7eb;專欄推薦&#x1f7e5;活動信息 文章目錄 JavaSE核心知識點03高級特性03-01&#xff0…

日志分析-IIS日志分析

環境準備 https://xj.edisec.net/challenges/115 題目要求 windows系統中才有的IIS服務 既然是windows平臺&#xff0c;當然需要rdp登錄&#xff0c;在ssh登錄失敗 解題過程 phpstudy--2018站點日志.(.log文件)所在路徑&#xff0c;提供絕對路徑 Windows服務的日志一般有固定…

一、web安全基礎入門

1、Windows命令 文件和目錄操作 dir&#xff1a;列出當前目錄下的文件和子目錄。cd&#xff1a;切換目錄&#xff0c;例如 cd C:\Users 切換到C盤的Users目錄。md 或 mkdir&#xff1a;創建新目錄&#xff0c;如 md testdir。rd 或 rmdir&#xff1a;刪除空目錄&#xff0c;例…

動態規劃應用場景 + 代表題目清單(模板加上套路加上題單)

1. 序列型DP&#xff08;Sequence DP&#xff09; ? 應用場景 單個或多個序列&#xff08;數組/字符串&#xff09;&#xff0c;求最優子結構。 常見問題&#xff1a;最長遞增子序列、最長公共子序列、回文子序列。 &#x1f9e0; 套路總結 單序列&#xff1a;dp[i] max(…

Linux iSCSI存儲共享實驗指南

實驗介紹 1、在Linux平臺上通過iSCSI協議實現IP-SAN存儲共享 2、掌握存儲導出(export)和存儲導入(import)的配置方法 3、學習iSCSI存儲的發現、連接、斷開和管理操作 1、實驗環境 兩臺同網段的Linux虛擬機&#xff08;無需物理交換機&#xff09; 操作系統&#xff1a;Lin…

從 Docker 到 runC

從 Docker 到 runC:容器底層原理詳解 目錄 1. Docker 與 runC 的關系 2. Docker 的核心組件 3. runC 的核心功能 4. 實戰示例:從 Docker 到 runC 4.1 示例場景:運行一個簡單容器 4.2 Docker 底層調用 runC 的流程 4.3 查看 runC 的調用 4.4 直接調用 runC 創建容器 …

使用Python在PowerPoint中插入形狀(Shape)

在進行演示文稿設計時&#xff0c;形狀&#xff08;Shape&#xff09;不僅可以增強視覺效果&#xff0c;還可以用于展示流程圖、標注、數據圖示等。借助Python&#xff0c;我們可以通過代碼快速批量地在PPT中添加各種形狀&#xff0c;提升設計效率。本文將介紹如何使用Python向…

Windows系統下MySQL 8.4.5壓縮包安裝詳細教程

一、MySQL 8.4.5新特性概覽 相較于舊版本&#xff0c;MySQL 8.4.5在性能與功能上實現了顯著提升&#xff1a; 性能優化&#xff1a;官方測試顯示&#xff0c;在高并發場景下&#xff0c;其讀寫性能較5.7版本提升近2倍&#xff0c;尤其在處理熱點數據競爭問題時表現更為出色。…

深度解析Vue項目Webpack打包分包策略 從基礎配置到高級優化,全面掌握性能優化核心技巧

深度解析Vue項目Webpack打包分包策略 從基礎配置到高級優化&#xff0c;全面掌握性能優化核心技巧 一、分包核心價值與基本原理 1.1 為什么需要分包 首屏加載優化&#xff1a;減少主包體積&#xff0c;提升TTI&#xff08;Time to Interactive&#xff09;緩存利用率提升&am…

【昇騰開發者訓練營:Dify大模型部署實戰】MindIE + Dify + DeepSeek + Embedding模型 + Rerank模型

文章目錄 部署 Dify1. Dify 適配 ARM2. 安裝 docker3. 啟動 Dify MindIEDify 實操手冊1. 基礎環境搭建1.1 環境檢查1.2 下載模型權重1.3 獲取MindIE鏡像 2. 啟動容器3. 純模型推理測試3.1 純模型對話測試3.2 性能測試 4. 服務化部署4.1 MindIE 配置4.2 MindIE 服務化4.3 發起測…

塔能高溫冰蓄冷技術:工廠能耗精準節能的創新之路

在工廠的能耗構成中&#xff0c;制冷系統是重要的耗能環節。傳統的水蓄冷和冰蓄冷技術在實際應用中存在一些局限性&#xff0c;難以滿足工廠對節能和成本控制的更高要求。塔能科技的高溫冰蓄冷技術&#xff0c;憑借其獨特的優勢&#xff0c;為工廠能耗精準節能提供了創新的解決…

通過現代數學語言重構《道德經》核心概念體系,形成一個兼具形式化與啟發性的理論框架

以下是對《道德經》的數學轉述嘗試&#xff0c;通過現代數學語言重構其核心概念&#xff0c;形成一個兼具形式化與啟發性的理論框架&#xff1a; 0. 基礎公理體系 定義&#xff1a; 《道德經》是一個動態宇宙模型 U(D,V,Φ)&#xff0c;其中&#xff1a; D 為“道”的無限維…

SQLMesh Typed Macros:讓SQL宏更強大、更安全、更易維護

在SQL開發中&#xff0c;宏&#xff08;Macros&#xff09;是一種強大的工具&#xff0c;可以封裝重復邏輯&#xff0c;提高代碼復用性。然而&#xff0c;傳統的SQL宏往往缺乏類型安全&#xff0c;容易導致運行時錯誤&#xff0c;且難以維護。SQLMesh 引入了 Typed Macros&…