第二周学习计划 · 从 Hello World 到心算训练器

这是你自己的一周 · 第 8-14 天

本周你要完成的事

第一周你把电脑的底子打好了,Python 也装好了,还写出了第一行代码。这一周咱们正式开始学编程——用 7 天,从零写出一个真正能玩的心算训练器,第 7 天我验收。

这周你会弄懂 6 件事:变量是什么、怎么让程序跟你对话、程序怎么做判断、怎么让程序重复干活、怎么把大程序拆成小块、怎么存一组数据。每天都能跑通一个小程序,一天比一天强。

每天 30-60 分钟,跑通就算完成,别贪多。卡住很正常,报错不是失败,是程序在告诉你它哪里没听懂。每跑通一个程序,发截图给我存档。

这周不配视频教程了——文字教程看懂例子,然后亲手把当天的小程序写出来,比看十遍视频都强。动手题全是原创的,网上没有现成答案,正是练真本事的地方。

D1 变量与数据类型

今天学什么:变量

涨知识 · 变量为什么叫"变量" 电脑里有个叫"内存"的大仓库。变量就是你在仓库里放的一个贴了标签的盒子——你往盒子里放数字、放文字,以后一叫这个标签就能拿到。这周你写的每个程序,都在用这个仓库。
  • 资源:
  • 怎么做:
    1. 打开 IDLE,照抄 3 个例子各运行一次:数字、字符串、对/错
    2. 今天故意犯一次错:写 print(age) 但 age 没定义 → 程序会报错 → 仔细看它长什么样。第一次见到报错别慌,记住它,以后就不怕了
    3. 看完教程两个小节,只看「例子 + 运行结果」
  • 动脑:变量名能叫 1name 吗?为什么?
  • 逆向思维:如果屏幕上显示了「我的名字:小明」,这行代码大概是怎么写的?倒推一下:print 里能放文字,也能放变量(提示:文字要加引号,变量不用加)
  • 错误知识:变量名不能叫 1name,会报 SyntaxError。除了数字开头,还有哪些名字不能用?想想:带空格的、和 if/for/print 同名的
  • 动手:写 my_info.py(原创,自己写,别照抄例子):用 3 个变量存「我的名字 / 我的年龄 / 我学会了Python」,分别 print 出来
  • 今天完成标准:程序跑通 + 能跟我说出"变量是干什么的"

D2 输入与输出(人机对话)

今天学什么:input 和 print

涨知识 · 程序怎么"听懂"你说话 电脑不认识你的话,但认识文字。用 input() 就是请它"等你说一句话",用 print() 就是让它"把话说出来"。人和程序就这样一问一答——这跟聊天软件收发消息是同一个道理。
  • 资源:
  • 怎么做:
    1. 照抄一个 input + print 的完整例子并运行
    2. 试一个坑:age = input("几岁?") 后写 age + 1 → 会报错 → 记住:input 拿进来的都是文字,要算数得先转成数字 int()
  • 动脑:input 拿回来的是文字还是数字?要算年龄 + 1,先做什么?
  • 逆向思维:程序先显示「你的名字?」,你输入「小明」后,它显示「你好,小明!」——倒推:这里用了哪两个函数?顺序是什么?小明这个名字是怎么放进打印结果里的?
  • 错误知识:age = input("几岁?") 之后写 age + 1 报错了——为什么?怎么改?(提示:input 拿回来的是文字,文字不能直接加数字;用 int() 转)再想:如果输入「abc」再转 int(),会发生什么?
  • 动手:写 talk.py(原创,自己拼,别照抄例子):问对方名字和年龄,然后输出「你好,XX!你今年 XX 岁,明年就 XX 岁了」
  • 今天完成标准:程序能跟你完整对话一次

D3 条件判断(程序会思考了)

今天学什么:if / elif / else

涨知识 · 判断的真假,电脑只有两个答案 你第一周看过"布尔逻辑"——电脑里所有判断,最后都落成两个词:真(True)和假(False)。if 就是问一句"是真的吗?",真就走这条路,假就走另一条。生活中的规则也一样:下雨带伞,不下雨不带。
  • 资源:
  • 怎么做:
    1. 照抄 1 个 if/elif/else 例子运行,改几个数字,看程序走哪条路
    2. 试一个坑:写 if age = 18: → 报错 → 记住:判断"相不相等"要用两个等号 ==,一个等号是"赋值"
  • 动脑:if 后面到底在问什么?(提示:真还是假)
  • 逆向思维:一个程序:输入 20 显示「成年人」,输入 15 显示「青少年」——倒推:if 的判断条件大概是什么?分支顺序怎么排?(提示:先判断大的,还是先判断小的?)
  • 错误知识:if age = 18: 会报错——为什么?(提示:= 是赋值,== 才是判断相等)除了这个,还有哪些容易写错?想想:少了个冒号会怎样?条件写反了会怎样?
  • 动手:写 age.py(原创,别照抄例子):输入年龄 → 0-12 说"小朋友",13-17"青少年",18-59"成年人",60 以上"老人家"
  • 今天完成标准:4 种年龄都能答对

D4 循环(让电脑帮你干重复的活)

今天学什么:for 和 while

涨知识 · 电脑最厉害的就是"不嫌烦" 人最怕重复,电脑最喜欢重复。循环就是让程序"把同一件事反复做",这也是算法的基础——你第一周看的速成课里,计算机的威力就来自"快速重复执行指令"。今天你亲手用上它。
  • 资源:
  • 怎么做:
    1. 照抄 for 例子(for i in range(5))运行
    2. 试一个坑:while 后面条件一直为真(忘了写停下来的条件)→ 程序会一直跑 → 按 Ctrl+C 停掉 → 记住:while 必须有一个"会变成假"的条件
  • 动脑:range(1, 101) 是从几到几?(提示:1 到 100,最后那个不包含)
  • 逆向思维:一个 for 循环把一堆数乘起来,最后输出 3628800——倒推:乘的是几到几?(提示:1×2×…×10 = 3628800)如果输出的是 24 呢?(1×2×3×4)
  • 错误知识:while 的条件一直为真,程序就永远跑不停——这就是死循环。怎么停下来?(Ctrl+C)除了「条件恒真」,还有哪些情况会死循环?想想:如果循环里忘了让条件变化呢?
  • 动手:写 fact.py(原创,教程没有现成例子):用 for 循环算 1×2×…×10(也就是 10 的阶乘),print 出结果(应该正好是 3628800);再写一个 while 版本对比
  • 今天完成标准:输出 3628800

D5 函数(把大程序拆成积木)

今天学什么:def 定义函数

涨知识 · 大房子是盖出来的,好程序是拆出来的 一个 100 行的程序没人能一次写对。聪明办法是把大任务拆成小积木(函数),一块一块做,做完拼起来。这叫"拆解"——写程序、做项目,将来学更难的东西,全用得上这个思路。
  • 资源:
  • 怎么做:
    1. 照抄一个 def 例子运行
    2. 试一个坑:函数里缩进不对 → 报错 → 记住:Python 用缩进分块,4 个空格或一个 Tab,不能混着用
  • 动脑:def say_hi(): 下面不缩进会怎样?
  • 逆向思维:程序里只要写 greet("小明") 就显示「你好,小明!」——倒推:这个函数是怎么定义的?(提示:def greet(名字): 里面 print 什么?)
  • 错误知识:定义了一个函数,运行程序却什么都没发生——为什么?(提示:只定义没调用)还有哪些坑?想想:函数名拼错了会怎样?调用时参数给多或给少会怎样?
  • 动手:把 D4 的阶乘程序改写成 def fact(n):(传 10 进去算 10 的阶乘),再定义 def greet(name): 输出欢迎语,主程序调用它们
  • 今天完成标准:一个程序里有两个函数 + 调用成功

D6 列表与随机(心算训练器第一版)

今天学什么:列表 + random 随机数

先说清楚 · 心算训练器到底是什么 心算训练器 = 一个「口算小测验」程序:电脑随机出两位数的加法题,你输入答案,它告诉你对错,一共 5 题,最后报你答对几题。不用图形、不用界面,黑框里跑就行。跑起来长这样:
第 1 题:37 + 58 = ? 95
答对了!
第 2 题:12 + 49 = ? 61
答对了!
第 3 题:76 + 23 = ? 90
答错了,正确答案是 99
...
你答对了 3 题,共 5 题
涨知识 · 一组数据怎么存 一个变量存一个东西,一堆东西怎么办?用列表——就像一排带编号的储物柜,列表[0] 拿第一个。这是"数据结构"的起点,也是以后做小游戏、小工具的基础。今天你还要学会让程序"抽一个随机数"——随机出题就靠它。
  • 资源:
  • 怎么做:
    1. 照抄一个列表例子运行,理解 列表[0] 取第一个
    2. 运行随机数例子:import random; print(random.randint(1, 100))
    3. 先自己想:心算训练器要哪几步?写下来。拆完就自己写,卡住可以问我——我不给你完整代码,网上也没有现成答案
  • 动脑:心算训练器需要几步?试着写出来(提示:出题→显示+输入→判断计分→循环)
  • 逆向思维:心算程序最后显示「你答对了 4 题,共 5 题」——倒推:score 这个变量被加了几次?(提示:答对一次加一次)如果显示「答对了 5 题」呢?
  • 错误知识:random.randint(1, 100) 报错 name 'random' is not defined——为什么?(提示:忘了一行 import random)还有哪些坑?想想:randint(100, 1) 顺序写反会怎样?输入「abc」再 int() 会怎样?判断写成 if ans = a + b(一个等号)会怎样?
  • 动手:写 brain_v1.py(心算训练器,原创,网上没有现成代码):每一行都要能说出它在干嘛;卡住可以问我,但我只给提示不给答案

这个程序怎么拆(自己先想,想不出再看提示):

  1. 随机出题:用 random.randint 生成两个数(比如都是 1-99)
  2. 显示题目 + 输入答案:print 出「第几题:a + b = ?」,再用 input + int() 拿答案
  3. 判断对错 + 计分:答案对了 score 加 1,错了打印正确答案
  4. 循环 5 轮 + 总结:最后打印「你答对了 X 题,共 5 题」

今天完成标准:完整跑通 5 轮,能说出这四部分

D7 考核日

今天不学新东西,我来验收这一周

前一天先做准备:把 brain_v1 升级成 v2——① 用一个列表记下每轮答对还是答错 ② 按答对数给评价(答对 4 题以上说「心算小能手」,2 题以上「还行」,否则「再练练」)。

大白话版:v2 = v1 基础上加两样东西——每答完一题,把这轮是「对」还是「错」记到一张纸上(列表);全部答完后,数一数对了几题,给出一句评价。还是 5 道加法题,只是结尾从「答对 X 题」变成「答对 X 题 + 一句评价」。

  • 今天做什么(15-20 分钟,视频远程):
    1. 跑程序:打开 brain_v2.py 运行,玩 2 轮,边玩边讲每段代码在干嘛
    2. 现场改需求:我出题(二选一,当场指定):「把加法改成减法(结果要保持正数)」或「把轮数从 5 改成 10」,你当场改、当场跑通
    3. 讲给我听:用一句话说出这个程序是哪四个部分拼起来的(随机出题、显示+输入、判断计分、循环)
    4. 说说这两周:两周前你还不会装 Python,现在你写出了自己第一个完整的小程序
  • 考核标准:程序跑通 + 现场改成功 + 能讲出四部分 = 这周满分。别紧张,会多少说多少,就当聊天。

写在最后

你已经能写出完整的程序了。两周前你的毕设连个好点的网页都算不上,今天你有了自己写的第一个完整小程序(心算训练器)——这不是运气,是你一天天亲手敲出来的。

下周咱们继续:把文字和列表玩得更熟,读读写写文件,再做一个小项目。路还长,但你已经站在路上了。