案例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集合综合案例的更多相关文章

  1. 【Java】集合综合案例 - 播放器管理

    集合综合案例 文章目录 集合综合案例 需求分析 项目演示 详细设计 代码实现 歌曲类 播放器类 播放列表类 测试 参考资料 播放器管理 需求分析 项目演示 详细设计 代码实现 重新搞一波 复习巩固 简 ...

  2. Collections集合工具类,集合嵌套,集合综合案例斗地主

    1 Collections集合工具类 (可以对比Arrays工具类共同记忆) 常用方法: 例: import java.util.ArrayList; import java.util.Collect ...

  3. DOM综合案例、SAX解析、StAX解析、DOM4J解析

    今日大纲 1.DOM技术对xml的增删操作 2.使用DOM技术完成联系人管理 3.SAX和StAX解析 4.DOM4J解析 5.XPATH介绍 1.DOM的增删操作 1.1.DOM的增加操作 /* * ...

  4. Solr综合案例深入练习

    1. 综合案例 1.1. 需求 使用Solr实现电商网站中商品信息搜索功能,可以根据关键字.分类.价格搜索商品信息,也可以根据价格进行排序,并且实现分页功能. 界面如下: 1.2. 分析 开发人员需要 ...

  5. 编程中易犯错误汇总:一个综合案例.md

    # 11编程中易犯错误汇总:一个综合案例 在上一篇文章中,我们学习了如何区分好的代码与坏的代码,如何写好代码.所谓光说不练假把式,在这篇文章中,我们就做一件事——一起来写代码.首先,我会先列出问题,然 ...

  6. solr综合案例

    1.  综合案例 1.1. 需求 使用Solr实现电商网站中商品信息搜索功能,可以根据关键字.分类.价格搜索商品信息,也可以根据价格进行排序,并且实现分页功能. 界面如下: 1.2分析 开发人员需要的 ...

  7. EL&Filter&Listener:EL表达式和JSTL,Servlet规范中的过滤器,Servlet规范中的监听器,观察着设计模式,监听器的使用,综合案例学生管理系统

    EL&Filter&Listener-授课 1 EL表达式和JSTL 1.1 EL表达式 1.1.1 EL表达式介绍 *** EL(Expression Language):表达式语言 ...

  8. spring基础:什么是框架,框架优势,spring优势,耦合内聚,什么是Ioc,IOC配置,set注入,第三方资源配置,综合案例spring整合mybatis实现

    知识点梳理 课堂讲义 1)Spring简介 1.1)什么是框架 源自于建筑学,隶属土木工程,后发展到软件工程领域 软件工程中框架的特点: 经过验证 具有一定功能 半成品 1.2)框架的优势 提高开发效 ...

  9. 斗地主的综合案例实现(Map有序)

    斗地主的综合案例实现(Map有序) 整体思路 代码实现 import java.util.ArrayList; import java.util.Collections; import java.ut ...

随机推荐

  1. java虚拟机学习-Java常量池理解与总结(13-2)

    一.相关概念 什么是常量用final修饰的成员变量表示常量,值一旦给定就无法改变!final修饰的变量有三种:静态变量.实例变量和局部变量,分别表示三种类型的常量. Class文件中的常量池在Clas ...

  2. Java中数据类型转换大全(个人总结)

    一.字符串转换为其他类型 1.将字符串转化为int型 (1)方法一 int i = Integer.parseInt(String str); (2)方法二 int i = Integer.value ...

  3. json.stringify()的妙用,json.stringify()与json.parse()的区别

    一.JSON.stringify()与JSON.parse()的区别 最近做项目,发现JSON.stringify()使用场景真的挺多,我们都知道JSON.stringify()的作用是将 JavaS ...

  4. UVa 11988 Broken Keyboard(数组模拟链表)

    题目链接: https://cn.vjudge.net/problem/UVA-11988 /* 问题 将一段文本经过一定的规则处理后输出,规则就是[表示home键,表示光标跳到行首,]表示end键, ...

  5. ZOJ 3960 What Kind of Friends Are You?(读题+思维)

    题目链接 :http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5592 Japari Park is a large zoo hom ...

  6. zoj 1760 Doubles(set集合容器的应用)

    题目链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1760 题目描述: As part of an arithmet ...

  7. 记录数据库操作记录的DDL触发器

    我们在项目中经常会对数据做一些操作,比如增加一个字段,修改一个存储过程,删除表等等操作,很有必要记录这些操作,以便以后出了问题,方便找到元凶.接下来介绍一个DDL触发器在实际环境中的使用,这个DDL触 ...

  8. 微信小程序 发现之旅(二)—— 自定义组件

    组件化的项目开发中,组件应当划分为三个层次:组件.模块.页面 微信小程序已经为开发者封装好了基础组件,页面文件(pages)也有了详细的规定 而模块就需要自行开发,并且要和页面文件区分开,这就涉及到自 ...

  9. gulp常用插件汇总

    1.gulp-sass 预编译 sass 文件为 css 文件,SASS 不多说,如果项目中有使用 sass ,那么这个插件应该是必备的.前面的一篇文章中,已经对该插件有所使用了,可配置编译后输出风格 ...

  10. BZOJ5305: [HAOI2018]苹果树

    传送门 果然只有我这种菜鸡才会用这种菜鸡做法QwQ 对于一类要求期望的题目,有一个无脑的做法: 设概率为 \(f\),期望为 \(g\) 每次合并两个二元组 \(<f_1,g_1>,< ...