-
用三个集合表示三门学科的选课学生姓名(一个学生可以同时选多门课)
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)
-
获取列表中出现次数最多的元素
例如: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)
-
实现给定一个日期,判断这个日期是今年第几天的程序(尝试)
例如: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)