作者文章归档:zuojie@88.com

第23章-AI提问技巧之需求描述四要素


今天不学语法。今天学的是这门课里最实用的一课:怎么把需求说给 AI 听。

你已经在用 AI 写代码了,但大部分人的问法是这样的——「帮我写个通讯录」。五个字,AI 收到的信息只有"通讯录"三个字,剩下的全靠猜:你是初学者还是老手?数据存哪?要哪些功能?界面长什么样?每个没说的细节,AI 都会自己挑一个默认答案。猜对了算运气好,猜错了就是"AI 写的代码不对"。

今天教你一套固定的说法,把需求一次说清楚,AI 写出来的代码十有八九直接能用。学完你会有个直观的对比:问得好,5 分钟出活;问得差,2 小时扯皮。

先做个实验:两种问法,两种结果

在 Cursor 里分别复制下面两段提示词,看...

阅读全文 →

第22章-封装与继承


昨天写的类,有个隐患你注意到没有:s.score = 60 这种写法,外面的代码想怎么改就怎么改,改成负数、改成字符串都没人拦。对象是你造出来的,数据却像摆在路边没人看管。今天解决这件事:封装,把数据锁进对象里,只留几个"窗口"让人操作。

顺便再学第二个设计:继承——先画一张通用的图纸,再画新的类时直接说"它也是这种",旧图上的东西就全有了,不用重画。两个概念都从生活例子讲起,不绕。

昨天留了个隐患:数据随便被人改

昨天的代码里,s.score 想改就改:

class Student:
    def __init__(self, name, score):
        self...

阅读全文 →

第21章-类与对象


前四周你写的程序,都是同一个套路:把数据传给函数,函数处理完返回结果。函数当然是好东西,但写多了你会发现问题——数据和操作它的函数是两拨人,各管各的。要描述一个学生,你得用几个变量存姓名、成绩,再写个专门的函数去打印它们,稍不留神就对不上号。

今天换一种组织代码的方式:类和对象。学完你会发现,写代码的思路从"一行行命令"变成了"造东西、用东西"。先记住一句话:类是图纸,对象是按图纸造出来的实物。后面的封装、继承,还有周五的图书管理项目,全都站在这句话上面。

类:一份能反复开模的图纸

想象你去家具店订做衣柜。设计师先画一张图纸,长、宽、高、几个抽屉都标在上面;工厂照着图纸造出一个实物衣...

阅读全文 →

第20章-JSON与综合项目:学生信息管理系统


这周你已经攒下三件工具:函数(打包代码)、文件(存住数据)、异常(防崩溃)。今天再补最后一个零件——JSON,然后把四样东西拼起来,做本周的终极项目:学生信息管理系统。

先交代一下 JSON 是什么。说白了,它就是一套全世界程序都认的"数据包装纸":Python 的字典和列表,用 JSON 写进文件,别的地方(网页、其他语言写的程序)也能读。更妙的是它长得几乎和 Python 的字典/列表一模一样,你几乎不用学新东西。学完 JSON,今天剩下的时间都交给这个系统:能添加学生(姓名+成绩)、查看全部、退出,数据存进 JSON 文件,程序关了再开数据还在。

这个系统把本周所有知识串成一条线...

阅读全文 →

第19章-异常处理


先看一个"事故现场"。运行下面这段代码,用户输入 abc:

num = int(input("请输入一个数字:"))   # 用户输入了"abc"
print(100 / num)

输出(用户输入 abc 时):

请输入一个数字: abc
Traceback (most recent call last):
  File "demo.py", line 1, in <module>
    num = int(input("请输入一个数字:"))
ValueError: invalid lit...

阅读全文 →

第18章-文件读写


先做个实验:昨天你用 random 生成过成绩、用 datetime 记录过时间,现在把程序关掉再打开——那些数据还在吗?不在。因为数据存在内存里,程序一结束,内存就被清空,跟白板写完一擦一样。

想让数据"存得住",就要写进文件:文件存在磁盘上,程序关了它还在,下次打开程序再读出来。就像脑子记不住所有事,所以要写在笔记本上;程序记不住数据,所以要写在文件里。今天学的就是"程序怎么写笔记本、怎么翻笔记本":open 打开文件、write 写进去、read 读出来、with 用完好心把文件关上。另外还有一个中国程序员专属的坑要先打预防针:处理中文必须写 encoding="utf-8",不...

阅读全文 →

第17章-常用标准库


假设你想写个程序:随机点一个同学的名字回答问题,或者让程序"掷骰子"出 1~6。你会不会觉得得先学一大堆随机算法?不用。Python 装好的那一刻,就自带了一大抽屉成品工具,随手就能用——这就是标准库。掷骰子这件事,import random 之后一行 random.randint(1, 6) 就搞定,就像去超市买现成的调味料,不用从种辣椒开始。

今天开三个最常用的工具抽屉:random(随机,用来抽奖、点名、掷骰子)、math(数学计算,开方、取整)、datetime(日期时间,记录"今天是几号")。这三个以后天天见:游戏、抽奖、记录日志、做报表都用得上。今天不要求你背 API,重点...

阅读全文 →

第16章-函数定义与参数


先说说你多半已经遇到的麻烦:程序里有一段代码要重复用好几遍,于是复制粘贴,粘贴完想改个地方,得挨个改好几处,漏改一处就是 bug。函数就是专门治这个的——把一段代码打包、起个名字,以后想用就叫它的名字,Python 会把那段代码从头跑一遍。就像微波炉,你不需要每次重新造一个加热的炉子,按一下"加热"按钮就行。

这一周后面要做文件读写、异常处理、学生信息管理系统,全靠函数把代码组织起来,所以今天的内容是后面所有章节的地基。我们从最基础的问题开始:怎么定义一个函数,怎么叫它干活。

定义函数:把代码打包起名字

定义函数用 def 开头,后面跟函数名和括号,再跟一个冒号;函数体要缩进 4 个...

阅读全文 →

第15章-综合练习:词频统计与成绩管理


前四天我们学了四样装数据的容器:字符串(一句话)、列表(一串东西)、字典(有名字的数据)、集合(去重)。今天不学新东西,把四样全用上,写两个完整程序:词频统计和成绩管理。

为什么专门安排这一天?因为真实工作里没有一个程序是"只用一种容器"写出来的——都是容器 + 循环 + 判断组合出来的。今天练的不只是代码,更是一种干活方式:先自己写,卡住了问 AI,但动手必须自己来。做完今天的练习,你就能挺直腰板说:我独立写出了有真实用途的小程序,而且我知道怎么跟 AI 一起干活。

先把四个容器摆在一起

写综合练习前,把本周的容器放一起对比一遍,脑子里得有这张表:

容器 写法 特点 什么时候...

阅读全文 →

第14章-集合与组合结构


第14章 集合与组合结构

问你一个问题:手头有一串名单,里面有人重复报了两次名,怎么把重复的去掉?用昨天学的列表,得写循环一个个比对,麻烦。Python 里有个东西天生干这个——集合,一个"自动去重"的麻袋:你把一袋子数字倒进去,重复的自动消失,[1, 2, 2, 3, 3, 3] 倒进去就剩 {1, 2, 3}。

处理"有没有重复""有哪些公共元素"这类问题,集合最省事。今天先学它,再学本周真正的重头戏——列表套字典:一个列表里每个元素都是一个字典。它就像一张 Excel 表格:列表 = 整张表,每个字典 = 一行记录,字典的键 = 列名。为什么必须学它?因为从下周开始的所有项目——...

阅读全文 →