写点什么

青年大学习自动核对名单详细教程【Python 版】

作者:BROKEN
  • 2023-05-05
    安徽
  • 本文字数:1306 字

    阅读完需:约 4 分钟

青年大学习自动核对名单详细教程【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列表里面。

效果

到这里,我们的程序就实现了,回头,我把程序封装一下,大家就可以直接使用了。


总结

哈哈,这下谁没有学习青年大学习,就可以一下找到了。

发布于: 刚刚阅读数: 3
用户头像

BROKEN

关注

还未添加个人签名 2022-08-02 加入

还未添加个人简介

评论

发布
暂无评论
青年大学习自动核对名单详细教程【Python版】_三周年连更_BROKEN_InfoQ写作社区