青年大学习自动核对名单详细教程【Python版】
前言
大家好,今天我们来给大家分享一个很实用的东西。这个小程序来自于一个很偶然的想法,我作为班级团支书,核对青年大学习的名单是一件既费时又费力还没有技术含量的事情。那为何不写一个能够自动核对名单的小程序呢?
想法和思路
编写程序:我们可以编写一个程序,用于帮助我们核对青年大学习学习名单。这个程序可以根据我们输入的学习名单,自动检查名单中的每个人是否已经完成了学习任务。我们可以使用编程语言(如Python)来编写这个程序。
但是,我们发现这个方法太麻烦,这个和我一个一个对比,有什么区别呢。我就想到了直接构建列表就好了啊。省时省力。
功能实现
url = 'http://dxx.ahyouth.org.cn/api/peopleRankStage'
data = {
'table_name': 'reason_stage259',
'level1': '直属高校',
'level2': '某某大学',
'level3': '电子工程与智能制造学院',
'level4': '微电子科学与工程2002',
}
res = requests.get(url, params=data)
具体来说,这个 URL 是 http://dxx.ahyouth.org.cn/api/peopleRankStage
,表示请求一个名为 reason_stage259
的数据表中的某些列信息。这个数据表中可能包含一些数据,包括某个人的各种信息,例如他的直属高校、所在学院、专业等等。这里就是大家学习的名单。
data
字典包含了需要查询的列名和对应的值,例如 table_name
表示需要查询的表名,level1
表示需要查询的列名为 level1
的值,level2
表示需要查询的列名为 level2
的值等等。
调用 requests
库中的 get()
方法,传入这个 URL 和 data
字典,可以获取服务器返回的结果。这个结果是一个字典,其中包含了查询的结果,就是学习的名单。
我们发现返回res.text就会乱码,我们可以转码,或者直接json解决。
我们接着看看后面的程序:
html_lists = res.json()['list']['list']
for html_list in html_lists:
username = html_list['username']
yixue_list.append(username)
这段代码把 res.json()
返回的是一个包含多个字典的列表,每个字典代表一个用户的信息。['list']['list']
表示字典中的第一个键对应的列表,即用户的名字和学习时间。
循环处理 html_lists
列表中的每个字典,获取其中的 username
键,将其添加到 yixue_list
列表中。这样,循环结束后,yixue_list
列表中就包含了所有学习了青年大学习的名字。
weixue_list = list(set(list_all) - set(yixue_list))
if not weixue_list:
print("全部完成青年大学习")
else:
print("未完成的名单如下\n", weixue_list)
这段代码使用了 Python 的集合(set)和列表(list)操作。
首先,它使用 set
将所有用户的名字转换为集合,去除了重复的名字。然后,它使用 set
将 yixue_list
中的名字转换为集合,再使用 set
将两个集合的差转换为新的集合。
接着,它检查新集合是否为空,如果为空,则说明所有用户都已经完成了青年大学习,程序输出一条消息。否则,它输出未完成的名单,并将其打印出来。
我们这里把我们班级所有同学的名字都放到一个list_all
列表里面。
效果
到这里,我们的程序就实现了,回头,我把程序封装一下,大家就可以直接使用了。
总结
哈哈,这下谁没有学习青年大学习,就可以一下找到了。
转载自:https://juejin.cn/post/7226288663943168057