【Python 基础与实战】从基础语法到项目应用的全流程解析

news2025/5/24 13:55:33

(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"] += 10
	print(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"]= 50
	d["jim"]= 45
	d["joan"]= 54
	d["susan"]= 51
	d["john"]= 53
	print(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] += num

for 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 += 1
    right_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.coloradmin.cn/o/2384640.html

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

相关文章

2025年医美行业报告60+份汇总解读 | 附 PDF 下载

原文链接&#xff1a;https://tecdat.cn/?p42122 医美行业在消费升级与技术迭代的双重驱动下&#xff0c;已从边缘市场逐步走向主流。数据显示&#xff0c;2024 年中国医美市场规模突破 3000 亿元&#xff0c;年复合增长率达 15%&#xff0c;但行业仍面临正品率不足、区域发展…

API自动化与持续集成核心实战知识点!

想象一下&#xff0c;你开发的API像一辆跑车&#xff0c;性能强劲&#xff0c;但你如何确保它每次启动都完美无缺&#xff1f;或者你的代码像一道复杂的菜肴&#xff0c;如何保证每次更新都不破坏原有味道&#xff1f;答案就是API自动化测试与持续集成&#xff01;SuperTest让你…

基于SpringBoot+Vue的社区医院信息平台设计与实现

项目背景与概述 随着医疗健康信息化的发展&#xff0c;社区医院的管理逐渐由传统的手工模式转向信息化管理。为了提高医院的管理效率、减少人工操作、提升服务质量&#xff0c;开发一个高效且实用的社区医院信息平台显得尤为重要。本系统基于Spring Boot框架与MySQL数据库设计…

C++ 中的暴力破解算法

一、暴力破解算法原理​ 暴力破解算法&#xff0c;顾名思义&#xff0c;就是通过穷举所有可能的解&#xff0c;逐一验证&#xff0c;直到找到满足条件的解。它不依赖复杂的逻辑推导或数学优化&#xff0c;而是依靠计算机强大的计算能力&#xff0c;将所有可能的情况都尝试一遍…

率先实现混合搜索:使用 Elasticsearch 和 Semantic Kernel

作者&#xff1a;来自 Elastic Enrico Zimuel 及 Florian Bernd 混合搜索功能现在已在 .NET Elasticsearch Semantic Kernel 连接器中提供。阅读这篇博客文章了解如何开始使用。 Elasticsearch 已原生集成业内领先的生成式 AI 工具和服务提供商。欢迎观看我们的网络研讨会&…

基于SpringBoot的网上租赁系统设计与实现

项目简介 本项目是基于 Spring Boot Vue 技术栈开发的 网上租赁系统。该系统通过前后端分离的架构&#xff0c;提供用户和管理员两种角色的操作权限&#xff0c;方便用户进行商品租赁、订单管理、信息查询等操作&#xff0c;同时也为管理员提供了商品管理、用户管理、订单管理…

AI浪潮下,第五消费时代的商业进化密码

解锁 AI 与第五消费时代 在时代的长河中,消费浪潮的更迭深刻地影响着商业的格局。当下,我们正处于第五消费时代,这个时代有着鲜明的特征,如老龄化、单身化趋势日益显著,社会逐渐步入低欲望、个性化与共享化并行的阶段 。随着人工智能技术的飞速发展,它在商业领域的渗透也…

Jouier 普及组十连测 R4

反思 本次比赛到时没有什么细节错误&#xff0c;不过代码思路不好所以分数也不是很高。 T1 代码思路 看题意&#xff0c;发现数据范围不大&#xff0c;直接动用码力暴力即可。 代码 #include<bits/stdc.h> using namespace std;vector<vector<int> > a(110…

bi平台是什么意思?bi平台具体有什么作用?

目录 一、BI平台是什么意思 1. 具体内涵 2. 主要构成 二、BI 平台具体有什么作用 1. 提供全面的数据洞察 2. 支持快速决策 3. 优化业务流程 4. 提升企业协作 三、BI 平台的应用场景 1. 金融行业 2. 零售行业 3. 制造行业 4. 医疗行业 总结 “每天在海量数据中反复…

Redis从入门到实战 - 原理篇

一、数据结构 1. 动态字符串SDS 我们都知道Redis中保存的key是字符串&#xff0c;value往往是字符串或者字符串的集合。可见字符串是Redis中最常用的一种数据结构。 不过Redis没有直接使用C语言中的字符串&#xff0c;因为C语言字符串存在很多问题&#xff1a; 获取字符串长…

26考研|高等代数:线性变换

前言 线性变换这一章节是考频较高的一部分&#xff0c;此部分涉及考点较多&#xff0c;涉及的考题也较多&#xff0c;学习线性变换时&#xff0c;应该注意搭建线性变换与矩阵之间的联系&#xff0c;掌握如何利用矩阵表示一个线性变换结构&#xff0c;同时介绍了最简单的线性变…

VSCode如何像Pycharm一样“““回车快速生成函数注释文档?如何设置文档的样式?autoDocstring如何设置自定义模板?

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 让VSCode拥有PyCharm级注释生成能力 📒🚀 实现方案🛠️ 备用方案📒 自定义注释文档格式样式 📒🔄 切换主流注释风格✨ 深度自定义模板🛠️ 类型提示与注释联动优化⚓️ 相关链接 ⚓️📖 介绍 📖 用PyCharm写P…

PCIe学习笔记(3)链路初始化和训练

PCIe学习系列往期文章 PCIe学习笔记&#xff08;1&#xff09;Hot-Plug机制 PCIe学习笔记&#xff08;2&#xff09;错误处理和AER/DPC功能 文章目录 链路训练概述Bit LockSymbol Lock (Gen1/2)Block Alignment (Gen3)Lane Polarity InversionLane ReversalLane-to-Lane De-ske…

Oracle 11g导出数据库结构和数据

第一种方法&#xff1a;Plsql 利用plsql可视化工具导出&#xff0c;首先根据步骤导出表结构&#xff1a; 工具(Tools)->导出用户对象(export user objects)。 其次导出数据表结构&#xff1a; 工具(Tools)->导出表(export Tables)->选中表->sql inserts(where语…

零基础设计模式——创建型模式 - 抽象工厂模式

第二部分&#xff1a;创建型模式 - 抽象工厂模式 (Abstract Factory Pattern) 我们已经学习了单例模式&#xff08;保证唯一实例&#xff09;和工厂方法模式&#xff08;延迟创建到子类&#xff09;。现在&#xff0c;我们来探讨创建型模式中更为复杂和强大的一个——抽象工厂…

解锁内心的冲突:神经症冲突的理解与解决之道

目录 一、神经症冲突概述 二、冲突的基本类型 三、未解决冲突的后果 四、尝试解决的途径 五、真正解决冲突 六、总结 干货分享&#xff0c;感谢您的阅读&#xff01; 人类的内心世界复杂多变&#xff0c;常常充满了各种冲突和矛盾。每个人在成长的过程中&#xff0c;都或…

Redisson读写锁和分布式锁的项目实践

解决方案:采用读写锁 什么是读写锁 Redisson读写锁是一种基于Redis实现特殊的机制,用于在分布式系统中协调对共享资源的访问,其继承了Java中的ReentrantReadWriteLock的思想.特别适用于读多写少的场景.其核心是:允许多个线程同时读取共享资源,但写操作必须占用资源.从而保证线…

SkyWalking高频采集泄漏线程导致CPU满载排查思路

SkyWalking高频采集泄漏线程导致CPU满载排查思路 契机 最近在消除线上服务告警&#xff0c;发现Java线上测试服经常CPU满载告警&#xff0c;以前都是重启解决&#xff0c;今天好好研究下&#xff0c;打arthas火焰图发现是SkyWalking-agent的线程采集任务一直在吃cpu&#xff…

【HarmonyOS 5】Map Kit 地图服务之应用内地图加载

#HarmonyOS SDK应用服务&#xff0c;#Map Kit&#xff0c;#应用内地图 目录 前期准备 AGC 平台创建项目并创建APP ID 生成调试证书 生成应用证书 p12 与签名文件 csr 获取 cer 数字证书文件 获取 p7b 证书文件 配置项目签名 配置签名证书指纹 项目开发 配置Client I…

ld: cpu type/subtype in slice (arm64e.old) does not match fat header (arm64e)

ld: cpu type/subtype in slice (arm64e.old) does not match fat header (arm64e) in ‘/Users/*****/MposApp/MposApp/Modules/Common/Mpos/NewLand/MESDK.framework/MESDK’ clang: error: linker command failed with exit code 1 (use -v to see invocation) 报错 解决方…