芝士小鱼 2023-12-14 22:48 采纳率: 83.3%
浏览 8
已结题

python的字典和集合程序

1.生成10个0~10之间的随机数并输出其中互不相同的数。
2.生成20个0~20的随机整数并按升序输出其中互不相同的数。
3.已知集合A、B、C:A={('a',1),('b',2),('c',3),('d',4)} B={('b',2),('c',3),('f',3),('d',4)}
程序需要完成:
(1)设置C初值是空集合
(2)从集合B中删除元素('d',4)
(3)输出A和B的差集

4有三张残缺通讯录分别存着姓名与手机号或姓名与微信号,请将通讯录合并为形如下
{"姓名":["手机号","微信号"]}的字典并将残缺的手机号或微信号用"未知"填充并输出。
dicTXL={"小新":"13913000001","小亮":"13913000002"}
dicOther={"大刘":"13914000001","大王":"13914000002"}
dicWX={"小新":"xx9907","小刚":"gang1004","大刘":"liu666"}
dicResult={}

  1. 存在三个数据集合s1、s2、s3。
    s1 = {11,34,25,67,33};s2={22,33,15,66,25};s3={87,63,22,25,76}
    现在需要求得以下结果:
    ​ ①获取s1、s2中和s3中内容相同的元素列表。
    ​ ②获取s1中有,s2中没有的元素列表。
    ​ ③获取s1和s2中内容都不同的元素。
    ​ ④获取s1、s2、s3中都包含的元素。
    ​ ⑤获取s1、s2、s3中只出现一次的元素。
  2. 已知《Python语言程序设计》课程第一次考试排名前五的学生分别是:王亮,张磊,施然,方向,刘潇 ;第二次考试排名前五的学生分别是:方向,施然,成龙,张磊,司马清。程序中要求使用集合运算解决以下问题:
    (1)找出第一次或第二次排名前五的学生姓名
    (2)两次考试均进前五的学生姓名
    (3)仅在一次考试中进前五的学生姓名。
  • 写回答

1条回答 默认 最新

  • 日晨难再 优质创作者: 嵌入式与硬件开发技术领域 2023-12-14 22:59
    关注
    1. 生成10个0~10之间的随机数并输出其中互不相同的数。
    import random
    random_numbers = random.sample(range(11), 10)
    print(random_numbers)
    
    1. 生成20个0~20的随机整数并按升序输出其中互不相同的数。
    random_numbers = sorted(set(random.sample(range(21), 20)))
    print(random_numbers)
    
    1. 集合操作
    A = {('a', 1), ('b', 2), ('c', 3), ('d', 4)}
    B = {('b', 2), ('c', 3), ('f', 3), ('d', 4)}
    C = set()
    
    # (1) 设置C初值是空集合
    # (2) 从集合B中删除元素('d', 4)
    C.update(A)
    B.discard(('d', 4))
    
    # (3) 输出A和B的差集
    result = A - B
    print(result)
    
    1. 合并通讯录
    dicTXL = {"小新": "13913000001", "小亮": "13913000002"}
    dicOther = {"大刘": "13914000001", "大王": "13914000002"}
    dicWX = {"小新": "xx9907", "小刚": "gang1004", "大刘": "liu666"}
    dicResult = {}
    
    for name in set(dicTXL) | set(dicOther) | set(dicWX):
        dicResult[name] = [dicTXL.get(name, "未知"), dicWX.get(name, "未知")]
    
    print(dicResult)
    
    
    1. 数据集合操作
    s1 = {11, 34, 25, 67, 33}
    s2 = {22, 33, 15, 66, 25}
    s3 = {87, 63, 22, 25, 76}
    
    # ① 获取s1、s2中和s3中内容相同的元素列表
    common_s1_s2_s3 = list(s1 & s2 & s3)
    
    # ② 获取s1中有,s2中没有的元素列表
    unique_s1_not_s2 = list(s1 - s2)
    
    # ③ 获取s1和s2中内容都不同的元素
    different_s1_s2 = list((s1 | s2) - (s1 & s2))
    
    # ④ 获取s1、s2、s3中都包含的元素
    all_common_elements = list(s1 & s2 & s3)
    
    # ⑤ 获取s1、s2、s3中只出现一次的元素
    unique_elements = list((s1 ^ s2 ^ s3) - (s1 & s2 & s3))
    
    print("①", common_s1_s2_s3)
    print("②", unique_s1_not_s2)
    print("③", different_s1_s2)
    print("④", all_common_elements)
    print("⑤", unique_elements)
    
    
    1. 学生排名问题
    exam1_top5 = {"王亮", "张磊", "施然", "方向", "刘潇"}
    exam2_top5 = {"方向", "施然", "成龙", "张磊", "司马清"}
    
    # (1) 找出第一次或第二次排名前五的学生姓名
    top5_either_exam = exam1_top5 | exam2_top5
    
    # (2) 两次考试均进前五的学生姓名
    top5_both_exams = exam1_top5 & exam2_top5
    
    # (3) 仅在一次考试中进前五的学生姓名
    top5_only_one_exam = (exam1_top5 | exam2_top5) - (exam1_top5 & exam2_top5)
    
    print("(1)", top5_either_exam)
    print("(2)", top5_both_exams)
    print("(3)", top5_only_one_exam)
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 12月26日
  • 已采纳回答 12月18日
  • 创建了问题 12月14日