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

第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 表格:列表 = 整张表,每个字典 = 一行记录,字典的键 = 列名。为什么必须学它?因为从下周开始的所有项目——...

阅读全文 →

第13章-字典


昨天学的列表,存"一串同类型的东西"很顺手,但它有个短板:找数据只能靠"第几个"。比如 ["小明", 18, "北京"],你要拿年龄,得先记住"年龄在第 1 个位置"。万一中间加了一项,全乱套。

真实世界的数据几乎都有名字:人有姓名、年龄、城市,商品有名字和价格,网站要存几百万用户的资料。存这种"有名字的数据",Python 给了专门的容器——字典。它就像一本通讯录:要找小明的电话,直接翻到"小明"那一页就行,不用从头数到第几个。

今天学完,你就能写出"成绩单"这类小程序:用字典存同学成绩,遍历打印"谁:多少分"。

字典长什么样:花括号里的键值对

字典用花括号 {} 包起来,里面是"...

阅读全文 →