set集合综合案例

原创 2018年04月17日 10:27:35

案例01:生成0-10之间5个不相等的数

方法01:使用list集合实现

import random

list01 = []

for i inrange(100):

    num01 =random.randint(0, 10)

    if num01 not in list01:

       list01.append(num01)

    if len(list01)==5:

        break

print(list01)

 

方法01:使用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 instudent_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 inrange(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

JAVA集合框架之List、Map、Set之间的选择~小案例分析

案例分析 案例介绍:简易扑克牌游戏。 集合(list、set、map)的选择 既然要比较,我们还是先从JAVA集合的祖先来介绍。...
  • qq_23473123
  • qq_23473123
  • 2016-04-28 16:28:10
  • 1712

JAVA集合例子

  • 2016年09月11日 10:46
  • 32KB
  • 下载

应用程序开发——集合(泛型、List与Set集合互转换、Map、Properties、集合工具类Collections、同步控制)

泛型:(规定集合中存放对象的数据类型)●  语法:集合类型&amp;lt;数据类型&amp;gt;  集合对象名  = new  接口实现类&amp;lt;数据类型&amp;gt;();●  例子:L...
  • jin_luo
  • jin_luo
  • 2018-03-24 22:24:53
  • 19

第67课:SparkSQL下案例综合实战学习笔记

第67课:SparkSQL下案例综合实战学习笔记 1 SparkSQL案例分析 2 通过Java和Scala实现案例   本课直接通过实战练习SparkSQL下的Join操作: 先用Java...
  • slq1023
  • slq1023
  • 2016-04-08 00:24:28
  • 1424

集合框架_HashMap集合嵌套HashMap集合的案例

package cn.itcast_05; import java.util.HashMap; import java.util.Set; /* * HashMap嵌套HashMap * ...
  • L1585931143
  • L1585931143
  • 2017-01-14 13:55:29
  • 410

Java Set集合使用方法介绍(2)——宠物猫信息管理

Java public class Cat { private String name;// 名字 private int month;// 年龄 private String...
  • Rainary
  • Rainary
  • 2017-05-19 22:18:30
  • 394

【java编程】IO流和集合类综合题目

需求: 1.有5个学生,每个学生有三门功课 2.从键盘输入以上数据(姓名,三门课成绩) 3.输入格式为:zhangshan,30,40,60并计算出总成绩 4.把学生信息和计算出来的总成绩按从...
  • KFCKA
  • KFCKA
  • 2015-03-19 08:15:23
  • 855

Java——第八章(集合类)——项目案例

1、制造 3个骰子,各自打乱顺序,摇三次,然后显示各自骰子的大小。骰子类:import java.util.ArrayList; import java.util.Collections; impor...
  • Li_peilun
  • Li_peilun
  • 2016-12-03 15:52:15
  • 1049

现代综合评价方法与案例精选

  • 2015年12月16日 21:44
  • 21.38MB
  • 下载

PHP 常用函数 技巧方法集合 实例 运用篇

又到了综合篇,因为在笔记中看到了很多细碎的PHP函数运用技巧方法,所以整理下这一篇,供大家参考删除字符串中的空格和回车//删除空格和回车 function trimall($str){ $qi...
  • weixin_36333654
  • weixin_36333654
  • 2016-10-10 15:36:03
  • 360
收藏助手
不良信息举报
您举报文章:set集合综合案例
举报原因:
原因补充:

(最多只允许输入30个字)