【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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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&…