set集合综合案例
案例01:生成0-10之间5个不相等的数
方法1:使用list集合实现
import random
list01 = []
for i in range(100):
num01 = random.randint(0, 10)
if num01 not in list01:
list01.append(num01)
if len(list01)==5:
break
print(list01)
方法2:使用set集合实现,自动消除重复
import random
number_set = set()
while len(number_set) < 5:
number_set.add(random.randint(0,10))
print(number_set)
执行结果:
C:\python\python.exe C:/python/demo/file3.py
{0, 1, 6, 9, 10}
Process finished with exit code 0
案例02:有10个学生,姓名自行添加。有三门考试:语文、数学和英语,随机为这10名学生生成分数【50-100】,要求每一门科目中所有学生分数不能重复
需求:
1)统计出每门科目的前三名和后三名【包含姓名和具体分数】
2)统计出总分的前三名和后三名
3)在(50-100)的数字中,那些数字没有在三门的分数中出现过
方法01:
import random
student_name = ["王一", "胡二", "张三", "李四", "赵五", "马六", "杨七", "刘八", "孙九", "陈十"]
student_result = [] # 存储所有学生的成绩明细
chinese_result = set() # 存储语文分数
maths_result = set() # 存储数学分数
english_result = set() # 存储外语分数
# 开始生成一个语文分数
for i in range(len(student_name)):
while True:
temp = random.randint(50, 100)
if temp not in chinese_result:
chinese_result.add(temp)
break
else:
continue
# 开始生成一个数学分数
while True:
temp = random.randint(50, 100)
if temp not in maths_result:
maths_result.add(temp)
break
else:
continue
# 开始生成一个英语分数
while True:
temp = random.randint(50, 100)
if temp not in english_result:
english_result.add(temp)
break
else:
continue
print(chinese_result)
print(maths_result)
print(english_result)
方法02:
对于相同的操作可以抽象成一个函数,在通过get调用这个函数即可
import random
def get_result(result:set):
while True:
temp = random.randint(50, 100)
if temp not in result:
result.add(temp)
break
else:
continue
return result
student_name = ["王一", "胡二", "张三", "李四", "赵五", "马六", "杨七", "刘八", "孙九", "陈十"]
student_result = [] # 存储所有学生的成绩明细
chinese_result = set() # 存储语文分数
maths_result = set() # 存储数学分数
english_result = set() # 存储外语分数
# 开始生成分数
for i in range(len(student_name)):
# 开始生成一个语文分数
chinese_result = get_result(chinese_result)
# 开始生成一个数学分数
maths_result = get_result(maths_result)
# 开始生成一个英语分数
english_result = get_result(english_result)
print(student_name)
print(chinese_result)
print(maths_result)
print(english_result)
# 把三个set集合转为list
chinese_result = list(chinese_result)
maths_result = list(maths_result)
english_result = list(english_result)
# 生成成绩明细
for i in range(len(student_name)):
temp_list = []
temp_list.append(chinese_result[i])
temp_list.append(maths_result[i])
temp_list.append(english_result[i])
student_result.append(temp_list)
print(chinese_result)
print(maths_result)
print(english_result)
print(student_result)
# 需求1:统计出每门科目的前三名和后三名【包含姓名和具体分数】以语文成绩为例
chinese_one = max(chinese_result)
print("语文第一名:姓名:%s,分数:%d" %(student_name[chinese_result.index(chinese_one)],chinese_one))
chinese_two = sorted(chinese_result)[8]
print("语文第二名:姓名:%s,分数:%d" %(student_name[chinese_result.index(chinese_two)],chinese_two))
chinese_three = sorted(chinese_result)[7]
print("语文第三名:姓名:%s,分数:%d" %(student_name[chinese_result.index(chinese_three)],chinese_three))
chinese_last_one = sorted(chinese_result)[0]
print("语文倒数第一名:姓名:%s,分数:%d" %(student_name[chinese_result.index(chinese_last_one)],chinese_last_one))
chinese_last_two = sorted(chinese_result)[1]
print("语文倒数第二名:姓名:%s,分数:%d" %(student_name[chinese_result.index(chinese_last_two)],chinese_last_two))
chinese_last_three = sorted(chinese_result)[2]
print("语文倒数第三名:姓名:%s,分数:%d" %(student_name[chinese_result.index(chinese_last_three)],chinese_last_three))
# 需求2:统计出总分的前三名和后三名
student_total_result = []
for i in student_result:
student_total_result.append(sum(i))
print(student_total_result)
# 打印前三名
total_one = sorted(student_total_result)[9] # 获取第一名分数
total_one_index = student_total_result.index(total_one) # 获取第一名分数的索引
# 打印第一名的姓名和总分均分
print("总分第一名【姓名:%s,分数:%d,均分:%.2f】" %(student_name[total_one_index],total_one, total_one/3))
# 打印第一名的分数明细
print("\t\t 语文:%d,数学:%d,英语:%d" % (student_result[total_one_index][0], student_result[total_one_index][1], student_result[total_one_index][2]))
total_two = sorted(student_total_result)[8]
print("总分第二名【姓名:%s,分数:%d,均分:%.2f】" %(student_name[student_total_result.index(total_two)],total_two, total_two/3))
total_three = sorted(student_total_result)[7]
print("总分第三名【姓名:%s,分数:%d,均分:%.2f】" %(student_name[student_total_result.index(total_three)],total_three, total_three/3))
# 需求3:在(50-100)的数字中,那些数字没有在三门的分数中出现过
total_number = set()
for i in range(50, 101):
total_number.add(i)
had_number = (set(chinese_result) | set(maths_result) | set(english_result))
print("未出现的数字有:", (total_number-had_number))
执行结果:
C:\python\python.exe C:/python/demo/file3.py
['王一', '胡二', '张三', '李四', '赵五', '马六', '杨七', '刘八', '孙九', '陈十']
{66, 80, 83, 51, 52, 86, 54, 55, 60, 94}
{98, 69, 74, 75, 77, 82, 52, 89, 92, 95}
{96, 66, 71, 72, 85, 88, 92, 61, 95, 63}
[66, 80, 83, 51, 52, 86, 54, 55, 60, 94]
[98, 69, 74, 75, 77, 82, 52, 89, 92, 95]
[96, 66, 71, 72, 85, 88, 92, 61, 95, 63]
[[66, 98, 96], [80, 69, 66], [83, 74, 71], [51, 75, 72], [52, 77, 85], [86, 82, 88], [54, 52, 92], [55, 89, 61], [60, 92, 95], [94, 95, 63]]
语文第一名:姓名:陈十,分数:94
语文第二名:姓名:马六,分数:86
语文第三名:姓名:张三,分数:83
语文倒数第一名:姓名:李四,分数:51
语文倒数第二名:姓名:赵五,分数:52
语文倒数第三名:姓名:杨七,分数:54
[260, 215, 228, 198, 214, 256, 198, 205, 247, 252]
总分第一名【姓名:王一,分数:260,均分:86.67】
语文:66,数学:98,英语:96
总分第二名【姓名:马六,分数:256,均分:85.33】
总分第三名【姓名:陈十,分数:252,均分:84.00】
未出现的数字有: {50, 53, 56, 57, 58, 59, 62, 64, 65, 67, 68, 70, 73, 76, 78, 79, 81, 84, 87, 90, 91, 93, 97, 99, 100}
Process finished with exit code 0
set集合综合案例的更多相关文章
- 【Java】集合综合案例 - 播放器管理
集合综合案例 文章目录 集合综合案例 需求分析 项目演示 详细设计 代码实现 歌曲类 播放器类 播放列表类 测试 参考资料 播放器管理 需求分析 项目演示 详细设计 代码实现 重新搞一波 复习巩固 简 ...
- Collections集合工具类,集合嵌套,集合综合案例斗地主
1 Collections集合工具类 (可以对比Arrays工具类共同记忆) 常用方法: 例: import java.util.ArrayList; import java.util.Collect ...
- DOM综合案例、SAX解析、StAX解析、DOM4J解析
今日大纲 1.DOM技术对xml的增删操作 2.使用DOM技术完成联系人管理 3.SAX和StAX解析 4.DOM4J解析 5.XPATH介绍 1.DOM的增删操作 1.1.DOM的增加操作 /* * ...
- Solr综合案例深入练习
1. 综合案例 1.1. 需求 使用Solr实现电商网站中商品信息搜索功能,可以根据关键字.分类.价格搜索商品信息,也可以根据价格进行排序,并且实现分页功能. 界面如下: 1.2. 分析 开发人员需要 ...
- 编程中易犯错误汇总:一个综合案例.md
# 11编程中易犯错误汇总:一个综合案例 在上一篇文章中,我们学习了如何区分好的代码与坏的代码,如何写好代码.所谓光说不练假把式,在这篇文章中,我们就做一件事——一起来写代码.首先,我会先列出问题,然 ...
- solr综合案例
1. 综合案例 1.1. 需求 使用Solr实现电商网站中商品信息搜索功能,可以根据关键字.分类.价格搜索商品信息,也可以根据价格进行排序,并且实现分页功能. 界面如下: 1.2分析 开发人员需要的 ...
- EL&Filter&Listener:EL表达式和JSTL,Servlet规范中的过滤器,Servlet规范中的监听器,观察着设计模式,监听器的使用,综合案例学生管理系统
EL&Filter&Listener-授课 1 EL表达式和JSTL 1.1 EL表达式 1.1.1 EL表达式介绍 *** EL(Expression Language):表达式语言 ...
- spring基础:什么是框架,框架优势,spring优势,耦合内聚,什么是Ioc,IOC配置,set注入,第三方资源配置,综合案例spring整合mybatis实现
知识点梳理 课堂讲义 1)Spring简介 1.1)什么是框架 源自于建筑学,隶属土木工程,后发展到软件工程领域 软件工程中框架的特点: 经过验证 具有一定功能 半成品 1.2)框架的优势 提高开发效 ...
- 斗地主的综合案例实现(Map有序)
斗地主的综合案例实现(Map有序) 整体思路 代码实现 import java.util.ArrayList; import java.util.Collections; import java.ut ...
随机推荐
- Spring配置文件引入xml文件: <import resource=" " />标签使用总结
引入其他模块XML 在Spring的配置文件,有时候为了分模块的更加清晰的进行相关实体类的配置. 比如现在有一个job-timer.xml的配置 <?xml version="1.0& ...
- 使你的IT职业生涯更上一层楼de14条建议
摘要:升值为企业IT部门的领导者,是大部分IT技术人员职业生涯的最终追求.但从一般大众中脱颖而出,并非易事.仅仅把本职工作干好远远不够,还需要IT技术人员展示出投身于技术发展的奉献精神及伴随技术发展而 ...
- .net开源项目整理
整理一些平时收藏和应用的开源代码,方便自己学习和查阅 1.应用 nopcommerce,开源电商网站,开发环境asp.net mvc(未支持.net core),使用技术(autofac,ef,页面插 ...
- win2d 图片水印
本文告诉大家如何使用 win2d 给图片加上水印. 安装 首先需要使用 Nuget 安装 win2d ,安装参见win10 uwp win2d 如果没有更新 dot net core 那么在运行可能会 ...
- Vue之组件使用(二)
补充一下:之前没提到,这里是一个父子组件通信的方法 如果想要使同一个组件实现不同的效果,那么可以这样做. 把需要封装的组件模板写在template中 <template id="cou ...
- python MRO及c3算法
1. 了解python2和python3类的区别 python2在2.3之前使用的是经典类, 2.3之后, 使用的是新式类 2. 经典类的MRO 树形结构的深度优先遍历 -> 树形结构遍历 cl ...
- 手动创建script解决跨域问题(jsonp从入门到放弃)
vue项目一般用axios代替jQuery发送ajax请求,但是不支持jsonp格式,需要安装jsonp的依赖包,这就很不爽了,能自己轻易实现的,为什么要引乱七八糟的插件.jsonp其实就是利用< ...
- 水平方向margin:auto
先上图 由图可看到,块级元素的水平方向上又"7大属性":margin-left.border-left.padding-left.margin-left.width.paddi ...
- mysql数据库操作指令
数据库相关 查询所有数据库 show databases; 创建数据库 create database 数据库名: 创建数据库指定字符集 create database 数据库名 character ...
- python实现分页插件
class Pages: def __init__(self, current_page, data_count, per_page_count=10, pager_num=7):#pager_num ...