尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
大四网络工程转型 AI 应用开发:我的 5 个月自学计划(第二周)
从跟着敲到自己搭这一篇是第二周的记录。第二周我学的东西比第一周更硬集合、字典、函数、参数的几种传法、lambda、递归最后还写了两个完整的系统。上一篇发出去之后我说尽量每周更一篇。结果假期玩嗨了把这事落下了。一、集合和字典第一次觉得数据可以这么存第二周开头学的是集合和字典这两个容器是新的。集合最有意思的地方是不重复。我写了个练习四门选修课的学生名单要找出同时选了法语和艺术的人。我用的是fa_set french_set.intersection(art_set)老师还讲了简写是交集、|是并集、-是差集三个符号对应三个操作。有一道题卡了我一下找出选修了足球但没选篮球的人。我用差集写出来了但后来发现还有另一种写法only_fb {s for s in football_set if s not in basketball_set}同一件事有两种解法一个用集合运算一个用推导式。第一次感觉到原来代码不是只有一条路。字典让我印象深的是key 不能重复。我写了个例子dict1 {亡灵:670, 黎母王:608, 亡灵:770}打印出来只剩亡灵:770——后面把前面覆盖了。key 必须是不可变类型可以是字符串、数字、元组但是列表和字典不行。这句话我一开始只是记下来后来写学生成绩管理的时候才真正懂它的意思只要 key 不可变就能靠它快速找到对应的数据。这就是主键。二、手搓第一个系统学生成绩管理 CLI这是第二周最费劲的一件事。需求是用字典套字典的方式存学生信息要能增、删、改、查、求平均分。我一开始没感觉坐下来想了半天才想明白数据该怎么存{姓名: {学号: xxx, chinese: xxx, math: xxx, english: xxx}}外层字典的 key 是姓名value 又是另一个字典装着这个学生的具体成绩。想通了这一步后面就是一块一块往里填。中间卡住的地方是求平均分。我当时的思路是先拿到这个学生的信息再把三科加起来除以 3。道理很简单但我写的时候发现all_dict1[names]取出来的是一整个字典我怎么单独拿到里面的三科成绩卡了挺久后来试出来是可以再取一层values_dict1 all_dict1[names] avg (values_dict1[chinese] values_dict1[math] values_dict1[english]) / 3字典套字典取数据就要取两层。这一下我彻底理解了嵌套结构。还有一个让我印象深的点是修改功能。我原来写了两套一模一样的逻辑一个是有就改一个是没有就报错写得很长。后来我意识到一个问题all_dict1[names]拿到的字典和我改的那个字典是不是同一个东西我试了一下是的。修改values_dict1就等于修改all_dict1[names]因为它俩指向的是同一个字典对象。这个发现让我的代码短了一大截。三、函数从一堆代码变成一块一块第二周后半段开始学函数。第一道让我有感觉的题是求圆的面积和周长。以前我肯定是写一堆变量算来算去现在def circle_area_len(r): return round(3.14*r*r, 1), round(2 * 3.14 * r, 1)一次返回两个值。当时我还纳闷一个return怎么返回两个打印出来才发现原来它是把两个值打包成元组了al circle_area_len(10) # (314.0, 62.8)而且可以解包拆开len_s, area circle_area_len(10)。这个和第一周学的元组解包是同一个东西只是用在了返回值上。函数里还有一处我写了很久计算一个字符串里有多少个元音字母。def vowel_count(n): num 0 for m in n: if m in aeiouAEIOU: num 1 return num这里的关键是m in aeiouAEIOU——判断一个字符是不是在这串字母里。老师在课上讲的时候我觉得挺妙不用写十个or直接用一个字符串当检查表。四、参数位置、关键字、不定长函数参数这块第二周学了好几种传法。位置参数就是按顺序传。关键字参数是点名传顺序可以乱reg_stu(namezhong, age18, gendernan, cityguandong) reg_stu(age18, namezhong, cityguandong, gendernan)两行结果一样因为都点明了名字。然后是不定长参数这个是新的def calc_data(*args): min_data min(args) max_data max(args) avg_data round(sum(args) / len(args), 1) return min_data, max_data, avg_data*args的意思是把传进来的所有位置参数装成一个元组。所以我写calc_data(3, 4, 5, 67, 99)的时候args就是(3, 4, 5, 67, 99)。还有**kwargs对应的是关键字参数会装成一个字典。这两个我记的诀窍是一个星号装元组两个星号装字典。而且必须先写位置参数再写关键字参数写反了会报错。有一处我觉得挺有用的写法是在**kwargs里做可选配置if kwargs.get(print): print(f最小值{min_data}最大值{max_data})传了printTrue才打印不传就静静返回。这种可选开关的写法我以前没见过。五、lambda 和递归两个卡了一会儿的东西lambda一开始我不太理解它存在的意义觉得跟普通函数差不多。直到有一道题把一个字符串列表按长度排序。data_list.sort(key lambda data : len(data))这里的key不是让我给它结果而是让我告诉它按什么规则排。写完之后我愣了一下——前面学max()的时候我写过max(wg_dict, keywg_dict.get)。这两个是同一个套路函数不只是我给你数据你给结果还可以我告诉你怎么算。递归是第二周最后一个知识点也是我写得最认真的一个。老师讲阶乘一开始我没太懂。后来我没接着往下看而是在注释里把整个过程手动展开了一遍jc(10) 10 * jc(9) …………… jc(9) 9 * jc(8) ………… ... jc(2) 2 * jc(1) 2 * 1 2 jc(1) 1一层层拆到底再一层层往回算。写完之后我看懂了——递归就是先递进、再回归而且必须有终点。那个终点就写在代码第一行def jc(n): if n 1: return 1 else: return n * jc(n-1)没有n 1这一行函数会一直调用自己停不下来。六、最后第二周开头我写了个小练习找字典里分数最高的人。当时我写的是maxx 0 maxx_key None for s in wg_dict.keys(): if maxx wg_dict[s]: maxx wg_dict[s] maxx_key s遍历一遍边比边记。写是写出来了但代码挺长。过了两天再看我改成了top max(wg_dict, key wg_dict.get)一行。同一道题第一版六行第二版一行。中间隔了两天多学了几个函数。第一周的结尾我写过我最大的问题是会敲但不会设计——老师给好场景我能填语法但要我自己拆一个需求就卡住。第二周结束我不敢说这个问题解决了但确实有变化。学生成绩管理和购物车这两个系统从数据结构怎么定、菜单怎么摆、每个功能怎么写都是我一点点拆出来的。
RELATED

相关推荐

C语言学习笔记(指针)

C语言学习笔记(指针)

指针:指向变量所使用的内存空间的地址 指针变量:一个变量专门用来存放另一变量在内存中数据的地址 (即指针),则它称为“指针变量”。我们可以通过访问指针变量达到访问内存中另一个变量数据的目的。(有时为了阐述方便, 将指针变量…

📅 2026/10/10 9:14:56
3个月从纯前端到独立交付AI产品 | 给前端小白的AI转型路线图(收藏版)

3个月从纯前端到独立交付AI产品 | 给前端小白的AI转型路线图(收藏版)

本文作者分享了从纯前端独立交付完整AI产品的3个月转型经历,涵盖后端基础、数据库设计、AI接入实战、Agent工具调用等关键学习点。通过项目驱动、AI辅助学习的方式,逐步掌握Node.js、Prisma、DeepSeek API等技能,最终实现前端界面、后端API、…

📅 2026/10/10 9:14:56
掌握AI智能体,小白也能月入过万:收藏这份进阶指南!

掌握AI智能体,小白也能月入过万:收藏这份进阶指南!

本文介绍了如何利用AI智能体(Agent)提升工作效率和收入。通过三个真实案例,展示了运营、Java工程师和行政人员如何通过学习和应用AI技术,实现职业突破和薪资增长。文章强调AI不是简单的工具,而是能够自动化工作流程的数…

📅 2026/10/10 9:14:56
MORE NEWS

更多资讯

📰

模拟企业开发环境搭建五天实战:从裸机到可协作可复现环境

看到这个标题,参加过系统化技术培训或是带过实训项目的人应该会心一笑。Day01-05,第五个学习日,主题是"搭建项目环境",目标很明确:"模拟企业环境",记录里还留着15:12这样的时间戳&…

📰

Python的循环里别用+=拼接字符串,真的会慢到哭

上周排查一个线上接口超时问题,发现日志里一个看似无害的字符串拼接操作,在处理 10 万条数据时竟拖慢了整个服务 3 秒——而换成正确的写法后,耗时直接降到 30 毫秒。这不是什么黑魔法,而是 CPython 字符串不可变特性在循环里的致…

📰

链表头结点详解:从原理到实战,彻底解决指针边界问题

提到链表头结点,很多新手的反应是:这不是一个多余的东西吗?数据都没存,凭什么占一个节点?但真正动手写插入、删除、遍历之后,又会发现代码各种边界条件纠缠不清,最后往往栽在“链表头到底改没改…

📰

PHP轻量课表查询系统:基于XMLReader的Excel解析与RESTful课表服务

简介:这是一套基于PHP与Excel的通用课表查询系统源码,面向计算机专业本科生、毕业设计开发者及Web初学者,解决学校、培训机构课程信息动态管理与便捷查询的实际需求。资源共19个文件,含5个核心PHP脚本(如index.php入口…

📰

别等迷路才下载:5 款户外轨迹导航 APP 实测与适配人群

作为多年徒步爱好者,我手机里常驻两步路户外助手,也习惯出发前用两步路户外助手核对轨迹。户外最怕的不是累,而是岔路口没信号、地图刷不出来、轨迹漂移,前后队一拉开,谁也不知道谁在哪。尤其重装穿越、夜爬、雨雾天&a…

📰

Fedora 安装 Microsoft Edge 官方仓库配置与常见问题排查指南

如果你也跟我一样,主力系统是 Fedora,桌面日常却始终绕不开一个 Chromium 内核的浏览器需求,那 Microsoft Edge 是个值得一试的选择。网上关于 Windows 版 Edge 的教程满天飞,但 Fedora 下的安装与配置往往被一笔带过;…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬