当前位置: 首页 > backend >正文

【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.xdnf.cn/news/8429.html

相关文章:

  • 虚拟机下ubuntu分区挂载实验
  • Structured Query Language(SQL)它到底是什么?
  • 重写muduo库
  • 深度学习中的分布偏移问题及其解决方法
  • 【Python 算法零基础 4.排序 ⑤ 归并排序】
  • Nature Cancer发表医学AI多模态模型,整合临床、基因、影像以及病理数据,探索跨模态信息融合方法
  • 问题六、SIMTOSIM部分遇到的问题及解决方法
  • hdc - Mac本环境配置
  • Terraform创建阿里云基础组件资源
  • 同一无线网络下的设备IP地址是否相同?
  • 前端[插件化]设计思想_Vue、React、Webpack、Vite、Element Plus、Ant Design
  • Pycharm和Flask的学习心得(4和5)
  • 如何获得 compile_commands.json
  • 博弈论(巴什、nim、......SG打表)
  • 从 0 到 1 打造高价值技术文档
  • VirtualHere USB Server国产替代软硬一体方案
  • ModbusRTU转profibusDP网关如何与万利达电动机保护器快速通讯
  • PyQt学习系列05-图形渲染与OpenGL集成
  • 五金铸件厂ERP是否好用呢
  • PostgreSQL 处理链接请求
  • Postgresql 数据库体系架构
  • OBS 玩转你直播录视频
  • Joplin+群晖NAS远程同步方案:私有云笔记的稳定存储与跨设备管理实践
  • 电路笔记(元器件):CAN 收发器 SN65HVD233 具有待机模式和环回功能的 3.3V CAN 收发器
  • Windows逆向工程提升之IMAGE_IMPORT_DESCRIPTOR
  • Python入门手册:Python基础语法
  • Android12 Rom定制去掉剪贴板复制成功的Toast
  • python之数据结构与算法篇
  • vue+threeJS 创建镂空球体(SphereGeometry)
  • 进考场!软考考试现场答题的注意事项