day9集合作业

  1. 用三个集合表示三门学科的选课学生姓名(一个学生可以同时选多门课)

    a. 求选课学生总共有多少人

    b. 求只选了第一个学科的人的数量和对应的名字

    c. 求只选了一门学科的学生的数量和对应的名字

    d. 求只选了两门学科的学生的数量和对应的名字

    e. 求选了三门学生的学生的数量和对应的名字

    sub1 = {'小明', '小红', '猴猴', '小鱼'}
    sub2 = {'乔乔', '猴猴', '小蓝'}
    sub3 = {'猴猴', '小鱼'}
    # a.求选课学生总共有多少人
    all1 = sub1 | sub2 | sub3
    print('a:',len(all1))
    
    # b.求只选了第一个学科的人的数量和对应的名字
    r2 = sub1 - sub2 - sub3
    print('b:',len(r2), r2)
    
    # c.求只选了一门学科的学生的数量和对应的名字
    # 方法1:
    new_list = []
    for x in all1:
        count = 0
        if x in sub1:
            count += 1
        if x in sub2:
            count += 1
        if x in sub3:
            count += 1
        if count == 1:
            new_list.append(x)
    print('c:',len(new_list),new_list)
    # 方法2:
    one = all1 - (sub1&sub2) - (sub1&sub3) - (sub2&sub3)
    print('c:',len(one),one)
    
    # d.求只选了两门学科的学生的数量和对应的名字
    # 方法1:
    new_list = []
    for x in all1:
        count = 0
        if x in sub1:
            count += 1
        if x in sub2:
            count += 1
        if x in sub3:
            count += 1
        if count == 2:
            new_list.append(x)
    print('d:',len(new_list),new_list)
    # 方法2:
    new_list = []
    for x in all1:
        if (x in sub1&sub2) and x not in sub3:
            new_list.append(x)
        if (x in sub2&sub3) and x not in sub1:
            new_list.append(x)
        if (x in sub1&sub3) and x not in sub2:
            new_list.append(x)
    print('d:',len(new_list),new_list)
    
    
    # e.求选了三门学生的学生的数量和对应的名字
    # 方法1:
    new_list = []
    for x in all1:
        count = 0
        if x in sub1:
            count += 1
        if x in sub2:
            count += 1
        if x in sub3:
            count += 1
        if count == 3:
            new_list.append(x)
    print('e:',len(new_list),new_list)
    # 方法2:
    three = sub1&sub2&sub3
    print('e:',len(three),three)
    

第一题:

# 1.用三个集合表示三门学科的选课学生姓名(一个学生可以同时选多门课)
course1 = {'李明', '张三', '李四', '王五', '赵四', '小花', '小明', '李华'}
course2 = {'小雪', '王二', '玲玲', '涛涛', '张三', '李华', '笑笑'}
course3 = {'小李', '李明', '李华', '王五', '赵四', '小赵', '小雪', '李华', '张三'}

# a. 求选课学生总共有多少人
r1 = course1 | course2 | course3
print('a.选课学生总人数:', len(r1))

# b. 求只选了第一个学科的人的数量和对应的名字
r2 = course1 - course2 - course3
print('b.只选了第一个学科的人的数量和对应的名字:', len(r2), r2)

# e. 求选了三门学科的学生的数量和对应的名字
r3 = course1 & course2 & course3
print('e.三门学科的学生的数量和对应的名字:', len(r3), r3)

# c. 求只选了一门学科的学生的数量和对应的名字
r4 = course1 ^ course2 ^ course3 - r3
print('c.只选了一门学科的学生的数量和对应的名字:', len(r4), r4)

# d. 求只选了两门学科的学生的数量和对应的名字
r5 = r1 - r3 - r4
print('d.只选了两门学科的学生的数量和对应的名字:', len(r5), r5)


  1. 获取列表中出现次数最多的元素

    例如:nums = [1, 2, 3,1,4,2,1,3,7,3,3] —> 打印:3

    nums = [1,2,2,1,3] --> 打印1、2

    nums = [1,2,2,1,3]
    set1 = set(nums)
    num = list(set1)
    result = []
    for x1 in set1:
        count = 0
        for x2 in nums:
            if x1 == x2:
                count += 1
        result.append(count)
    
    n = []
    for i,x in enumerate(result):
        if x == max(result):
            n.append(num[i])
    print(n)
    
    

第二题:

# 方法1:
# 1)去重获取不重复的元素
new_nums = list(set(nums))      # [1, 2, 3, 4, 7]

# 2)统计每个元素出现的次数
counts = []             # [3, 2, 4, 1, 1]
for x in new_nums:
    counts.append(nums.count(x))

# 3)获取最大次数
max_count = max(counts)

# 4)获取最大次数对应的元素
for index in range(len(counts)):
    if counts[index] == max_count:
        print(new_nums[index])

# 方法2:
# {1: 3, 2: 2, ....}
counts = {}
for x in nums:
    count = counts.get(x, 0)
    counts[x] = count + 1

max_count = 0
items = []
for x in counts:
    if counts[x] > max_count:
        max_count = counts[x]
        items.clear()
        items.append(x)
    elif counts[x] == max_count:
        items.append(x)
print(items)
  1. 实现给定一个日期,判断这个日期是今年第几天的程序(尝试

    例如:2022/12/31 --> 今年第365天;2022/1/1 --> 今年第1天

date = '2000/03/05'
# 1)提取年月日
year = int(date[0:4])
month = int(date[5:7])
day = int(date[-2:])

# 2)
days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30]

# 1 -  day
# 2 -  0 + day  (1)
# 3 -  1 + day  (2)
# 4 - 2 + day
# 5 - 3 + day

if month == 1:
    total_days = day
else:
    total_days = sum(days[:month-1]) + day
    if month > 2:
        if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
            total_days += 1
print(total_days)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值