我第二天的学习笔记来了。先说结论:这一天没有太烧脑的东西,但所有后续代码的“手感”,都是从这一天的练习里长出来的。如果你也是边工作边自学、每天只能挤出一两个小时的状态,这篇笔记应该能帮你少走几段弯路。
Day02学习笔记里我都干了什么?简单说三件事:把 Python 环境彻底跑通、搞明白变量到底是什么、让程序学会“接话”——也就是读取我输入的内容。每一件事单独看都不难,但串起来之后,你会第一次感受到“我在写程序,而不是在抄程序”。
这篇笔记不是零基础的小白花了三天完成的,我也没用什么高深的技巧,所有内容都基于我这台 Windows 笔记本上的真实操作。无论你之前有没有碰过代码,只要跟着 Day01 把 Python 装上,第二天按这套路走一遍,基本都能顺利落地。
1. 内容整体设计与思路拆解
1.1 为什么第二天不急着学语法
很多自学教程的第二天就直接扔出 for 循环、函数、列表,恨不得让你三天写出一个爬虫。我不建议这么干,尤其是白天还要上班的人。
第一天你可能刚把 Python 下载下来,装完环境,然后看着那个黑乎乎的窗口打了句“hello world”。手感还没热,第二天硬塞复杂语法,大概率第三天就不想打开了。所以我把第二天定位成“把地基踩实”:先解决环境里的各种隐形坑,再搞清楚变量和输入输出这两个最底层的动作。
打个比方,学编程很像学做饭。第一天你只是把锅买回来了,第二天不应该直接学颠勺,而是先搞明白火候怎么调、油温怎么看、菜刀怎么握。这些基本功看起来不出彩,但后面所有菜谱都建立在它们之上。
1.2 三个学习目标的递进关系
我给自己定的三个目标,是有先后逻辑的:
- 环境彻底跑通:确保从命令行启动 Python、用编辑器写代码、运行
.py文件这一整条链路没有任何障碍。这一环如果没打通,后面每一个练习都会卡壳。 - 真正理解变量:不是背定义,而是理解“变量是给数据贴的标签”。这个理解到位了,后面学列表、字典、对象时,都会轻松很多。
- 实现交互式输入输出:让程序能读入我输入的内容,再把它处理后输出。这一步是以后编写所有实用工具(比如批量改名、自动整理文件)的雏形。
这三个目标难度是逐渐上升的,而且每一个都为下一个做铺垫。环境不通,变量写得再好也运行不了;变量不熟,输入输出时连数据类型都理不清。我当时把这三个目标写在笔记本第一行,每完成一个就打个勾,这种小仪式感对坚持学习还挺有用的。
1.3 学习时间与节奏安排
我那天实际投入的时间大约是 90 分钟,中间还分成了三段来进行。第一段 30 分钟复盘环境问题,第二段 40 分钟练习变量和输入输出,第三段 20 分钟做一个小综合练习。这种分段方式很适合自学的人,因为每段都有一个明确的完成节点,不会让人觉得“学了半天也不知道学完没有”。如果你时间更充裕,可以适当延长第三段,多写几个组合练习;如果时间紧,至少也要保证第一段和第二段完整走完,因为它们是后续所有内容的地基。
2. 核心细节解析与实操要点
2.1 变量到底是个什么东西
Day02 最核心的概念就是变量。教科书上的定义是“用于存储数据的命名位置”,但这句话对新手来说太抽象了。我换个说法:变量就是给数据贴的一张标签。
你写这句代码:
name = "张三"Python 在内存里开辟一块地方,把“张三”这个字符串放进去,然后在上面贴了一张写着name的标签。以后你只要喊name,Python 就知道你指的是那块地方里的“张三”。
这里有个特别容易踩的坑:=不是数学里的“等于”,而是“赋值”,意思是把右边的值装进左边的名字里。所以你可以写:
a = 1 a = 2 print(a)最终输出的是2,因为第二次赋值就是把a这张标签重新贴到了2这个数据上,原来的1就没人管了。
还有一个初学者经常问的点:变量名需要“见名知义”。我见过有人写a = "张三",虽然能运行,但过两天再看代码根本不知道a是什么。更好的写法是name = "张三"或者user_name = "张三"。变量命名这件事,从第二天开始养成习惯,后面写长代码时会省很多事。
当然,光知道变量是什么还不够,还得知道变量里装的数据类型,因为不同类型的数据,能做的操作完全不同。比如"123"和123,一个带引号一个不带,前者是字符串,后者是整数,两者相加输出结果天差地别。这种基础的类型区分在第二天就搞明白,后面学函数时就不用回头补课了。
2.2 print 的隐藏细节
print()应该是你写的第一条语句,但它的细节比大多数人以为的要多。
第一个细节是print可以一次输出多个值,用逗号分隔即可:
print("我的名字是", name)输出结果里,逗号会自动变成一个空格。如果你想去掉这个空格,可以用sep参数:
print("我的名字是", name, sep="")第二个细节是print默认在结尾输出一个换行符,所以两条 print 会各占一行。如果你希望它们在同一行输出,可以设置end参数:
print("第一段", end=" ") print("第二段") # 结果是:第一段 第二段第三个细节是我踩过坑的地方:print 里既可以直接写字符串字面量(带引号的内容,比如"hello"),也可以直接写变量名。但如果你写print(name)时,name 没有提前被赋值,程序会直接报NameError。这个报错不是你的代码写错了,而是 Python 根本不认识这个变量名,你需要在前面先给它赋值。
说到底,print 的作用就是让程序把内部的数据传到屏幕上,它是程序员的“眼睛”。如果没有 print,你写的代码就像在黑屋里捉迷藏,永远不知道程序运行到哪一步了、数据变成了什么样子。所以第二天把 print 的细节摸透,一点都不亏。
2.3 input 与类型转换——程序第一次“活”起来
如果说 print 是程序的输出口,那 input 就是输入口。写一句:
name = input("请输入你的名字:")程序会先在屏幕上显示引号里的提示文字,然后停下来等你敲键盘。你输入的内容按回车后,会被存到name这个变量里。从这一刻起,程序不再是固定死的,它会根据你输入的内容做出不同反应。
但这里有一个巨坑:input 返回的一定是字符串。即使你在键盘上敲了数字18,Python 拿到的也是字符串"18",不是数字18。
这就意味着,如果你写:
age = input("请输入年龄:") print(age + 1) # 报错!程序会直接报错,因为字符串和整数不能相加。正确做法是类型转换:
age = int(input("请输入年龄:")) print(age + 1) # 输出你输入的年龄 + 1我把类型转换总结成一句口诀:输入靠 input,计算靠转换,显示靠 print。凡是需要把用户输入的内容参与数学运算,一律先int()或float()转成数字再做。
还有一种情况是反过来,你想把数字转成字符串。比如你在 print 里想拼一段话,遇到的就是这个问题:
age = 18 print("我今年" + age + "岁") # 报错!字符串只能跟字符串拼接,所以得写成:
print("我今年" + str(age) + "岁")这里引入了一个新知识点:字符串拼接。+不仅能做加法,在两个字符串之间还能把内容连起来。这个操作写起来很直接,但在实际项目中用的次数不算多,真正高频的场景是把字符串放进占位符。比如用 f-string,就可以省去 str() 转换:
print(f"我今年 {age} 岁")在括号里最前面加一个f,然后内部花括号包住变量名。这个方法一学就会,而且特别实用,我之后几乎所有涉及输出的代码都用它。如果 Day02 你只记住一个新的输出技巧,我建议就记住 f-string。
2.4 环境变量的坑与解决
这一部分放在核心细节里讲,是因为它决定了你今天能不能顺利开始练习。我 Day01 装完 Python 后,第一天用自带的 IDLE 写代码倒没什么问题,但第二天想用命令行直接输入python时,系统告诉我“不是内部或外部命令”。
原因很简单:安装 Python 时没有勾选“Add Python to PATH”,或者选了但没生效。解决办法有两个路径:
- 卸载重装,安装界面第一屏最底部有一个
Add Python to PATH复选框,记得勾上。 - 不重装,手动把 Python 的安装路径和 Scripts 目录加到系统环境变量里。路径一般在
C:\Users\你的用户名\AppData\Local\Programs\Python\Python311\,以及同目录下的Scripts文件夹。
我采用的是手动添加方式,因为不想重新下载安装包。具体操作步骤是:右键“此电脑” → 属性 → 高级系统设置 → 环境变量 → 在“系统变量”里找到Path,点击编辑,把上述两个路径分别新建一行加进去,然后依次点确定。改完之后需要重新打开命令行窗口才生效,这是新手容易忽略的坑。
这里想多说一句:环境变量这个东西,初学者不用深究它的原理,把它当成“告诉电脑去哪里找 Python”的地址簿就行。这段话建议你收藏下来,因为不只是今天,以后装 Node.js、Java、Git 等工具时,同样会碰到环境变量的问题。
3. 实操过程与核心环节实现
3.1 环境检查与准备
不管你是跟着我的步骤做到这里,还是昨天已经装好了环境,开工前先做一个快速健康检查。打开命令行(Windows 下是 CMD 或 PowerShell,按Win + R,输入cmd,回车),依次输入以下命令:
python --version能输出Python 3.x.x之类的版本号,说明 Python 本体没问题。如果是 3.8 以上的版本,今天的内容都能跑。接着输入:
pip --versionpip 是 Python 的包管理器,后面装第三方库都要靠它。如果提示找不到 pip,说明安装时没装好,或者环境变量里缺少 Scripts 目录。别急着往下走,把 2.4 那节的环境变量步骤重新做一遍,再开一个新的命令行验证。
编辑器方面,我用的是 VS Code,你也可以用 PyCharm 或者系统自带的 IDLE。但不管用哪个编辑器,我都建议你学会“在命令行里运行 Python 文件”这一招,因为它不依赖任何编辑器,是排查问题的基础能力。
3.2 完整实操:写一个“自我介绍生成器”
验证完环境之后,我直接做了一道综合练习题。需求很简单:程序读取你的姓名、年龄、城市,然后把它们组合成一段自我介绍输出。
新建一个文件,命名为intro.py,注意后缀必须是.py。代码如下:
name = input("请输入你的名字:") age = int(input("请输入你的年龄:")) city = input("请输入你所在的城市:") print("大家好,我叫" + name + ",今年" + str(age) + "岁,来自" + city + "。")运行方式有两种。第一种是在 VS Code 里直接点右上角的三角形运行按钮,这种最简单。第二种是在命令行里手动运行,先切到文件所在目录,然后执行:
python intro.py运行后会依次出现三个提示,每一次输入完按回车,最后程序输出完整的自我介绍。我实测的运行结果是这样的:
请输入你的名字:小明 请输入你的年龄:18 请输入你所在的城市:上海 大家好,我叫小明,今年18岁,来自上海。这个例子虽小,但把 Day02 的知识点全部串起来了:变量存储、input 读取、类型转换、字符串拼接。如果你能不看答案自己把它敲出来并成功运行,第二天的核心目标就已经达成了。
3.3 实操中的三个关键参数与写法优化
在上面这段代码里,有几个人容易忽略的细节值得展开讲一下。
第一个是int()的位置。如果我用两行分开写再合并,也可以,比如:
age_str = input("请输入你的年龄:") age = int(age_str)这种写法更清晰,适合初学者观察每一步发生了什么。但实际写代码时我倾向于一步到位,因为代码更短,而且两行的写法会让“临时变量”变多,代码越长越难看。你可以先学第一种,等熟练了再改第二种。
第二个细节是输入小数的情况。比如体重:
weight = float(input("请输入你的体重(kg):"))身高体重这类数据往往是小数,用int()会直接报错,因为字符串"60.5"无法转成整数。要么用float()转成浮点数,要么先float()之后再考虑取整。这个细节相信很多人第一遍都会踩到,记下来能少一点小挫折。
第三个细节是 f-string 的写法。上面那串 print 用普通拼接写起来总感觉有点绕,用 f-string 会舒服很多:
print(f"大家好,我叫{name},今年{age}岁,来自{city}。")字符串拼接还需要小心翼翼处理str(age),f-string 则完全不用管类型,直接塞变量名就行。我的建议是:从 Day02 开始就主动用 f-string,把它当成默认方案。学会它之后,你写代码的流畅度会提高一个档次。
3.4 扩展练习思路
觉得上面那个例子简单的话,可以试着往这个程序里加点功能。比如,在输出自我介绍之前,先判断年龄是否满 18 岁,然后给出不同的输出。这需要用if语句,属于第三天的内容,但你可以提前感受一下。另一个方向是把三次输入改成一次输入三个值,中间用逗号或空格隔开,然后利用字符串的split方法拆分成列表。这个方向也很有意思,涉及的内容同样在之后几天会学到。
我当时给自己留了一个扩展任务:让这个程序计算出生年份。思路是int(input("请输入年龄:"))拿到年龄后,用2025 - age算出大致出生年份。这个练习虽然只有一行计算,但能帮你把“类型转换 → 变量存储 → 算术运算 → 输出”这条链路再练一遍,性价比很高。
3.5 从命令行到脚本:建立正确的运行观念
写到这里,我想再强调一个观念层面的东西。新手最常见的错误是习惯用交互式命令行(就是那个>>>开头的窗口)写代码,写一行执行一行,觉得很方便。但交互模式不适合保存代码,也不适合写超过几行的程序。正确做法是始终用.py文件保存代码,然后用命令行运行整个文件。这样你的代码是可保存、可复盘、可分享的,而交互模式下写的代码一旦关闭窗口就全丢了。
我在实际做练习时,会在 VS Code 里打开一个文件夹专门存放自己写过的所有.py文件,文件名按日期和内容命名,比如day02_intro.py。这样做的好处是,过几天回头复习时,我可以直接看到自己第一天写的代码有多稚嫩,也能直观地看到进步。对自学者来说,这种“日志感”是很强的动力来源。
4. 常见问题与排查技巧实录
4.1 input 返回的是字符串,不是数字
这是个高频报错,我把现象和解决方式放在最前面。如果你写了类似age = input("年龄:"),然后print(age + 1),Python 会报TypeError: can only concatenate str (not "int") to str。这句话翻译过来就是:你试着把字符串和整数拼一起了,不允许。
解决方法是回顾这行代码的数据类型,给它套上int()。我的经验是:凡是跟数学计算相关的 input,第一反应就是转类型;凡是跟文本拼接相关的数字,第一反应就是 f-string。有了这两个第一反应,大部分类型问题都不会困扰你。
4.2 中文乱码问题
Windows 下的命令行对 UTF-8 编码支持得不算好,有时候会冒出中文乱码。我推荐两个办法。
第一个办法是,在.py文件开头加上一行注释:
# -*- coding: utf-8 -*-虽然 Python 3 默认就是 UTF-8 编码,但加上这行在某些旧版编辑器里能避免识别错误。
第二个办法是在命令行里输入:
chcp 65001这会把命令行代码页切换到 UTF-8。如果嫌麻烦,也可以直接用 VS Code 的“在终端中运行 Python 文件”按钮,它默认使用的编码方案一般不会乱码。
乱码问题本身不难解决,但会被新手误以为是代码写错了。所以我把这个问题也写进来,如果你遇到了,先看看是不是编码问题,跟逻辑无关。
4.3 路径与运行目录问题
在命令行里运行python intro.py时,如果提示找不到文件,十有八九是你当前所在的目录不是文件所在的目录。命令行默认当前目录通常是C:\Users\你的用户名,而你把文件保存在了桌面或者别的文件夹。
解决办法有两种。一种是用cd命令切换到文件所在目录,例如:
cd Desktop python intro.py另一种是直接给出文件的完整路径:
python C:\Users\你的用户名\Desktop\intro.py这个问题在刚开始时每天都会遇到,但习惯用 VS Code 打开文件夹后,它的终端会自动定位到当前项目目录,这类问题就会少很多。
4.4 常见问题速查表
我把 Day02 最典型的问题整理成一张表,方便你对照排查。这张表之后几天大概率会反复用到。
| 问题现象 | 根本原因 | 快速解决 |
|---|---|---|
python不是内部或外部命令 | Python 未加入 PATH | 重装并勾选 PATH,或手动添加环境变量 |
NameError: name 'xxx' is not defined | 变量名拼错或未赋值 | 检查拼写,检查赋值顺序 |
TypeError: can only concatenate str | 字符串与数字混合拼接 | 用str()转换,或改用 f-string |
ValueError: invalid literal for int() | input 内容无法转成整数 | 确认输入内容为纯数字,或用float() |
| 中文输出乱码 | 命令行编码问题 | 使用chcp 65001,或在编辑器内直接运行 |
| 文件找不到 | 当前目录不对 | 用cd切换目录,或写完整路径 |
4.5 避坑心得:不要中途切换编辑器
我在 Day02 犯了两个小错误,也顺便说一下。第一个是中途从 IDLE 换到 VS Code,结果在 VS Code 里敲代码时,缩进一会儿用空格一会儿用 Tab,虽然 Python 3 里不允许混用,当时查了好久才发现是缩进问题。第二个错误是贪图方便,直接在旧代码上改今天的练习,结果忘了保存原来的版本。
这两件事给我的教训是:早期学习阶段要固定一套工具链,别频繁换;切换前先把当前版本存个副本或提交到 Git。这些细节看起来跟语法无关,但很多新手的时间就是耗在这种环境问题上的。如果你能一次避开这两个坑,至少能省出一两个小时来多写两个练习。
5. 写给自己和你的经验总结
Day02 结束的时候,我回头看了自己写的第一版“自我介绍生成器”,发现它丑得可以,变量名是x、y、z,也没有任何注释。但我知道这个程序能跑,而且我完全理解它的每一行。这种“理解自己代码”的感觉,比“跑通别人的代码”要扎实得多。
第二天学到的所有东西,归根结底就三件事:环境通了,变量懂了,程序会对话了。看似基础,但第三天学条件判断时,你会发现所有判断都建立在变量上;第四天学循环时,你又会发现 input 是让循环真正有用的关键。这一天打的地基,后面每天都在用。
如果你也正在自学,我个人有两个小建议。第一,认真对待学习笔记,哪怕是极简的要点,也尽量记录下来,这是你自己跟未来的对话,比任何教程都更适合帮助回忆。第二,多做一个小扩展练习,哪怕只是把示例代码改一点点,比如改城市、改输出格式,都能加深你对代码结构的理解。代码是门手艺活,看得懂和自己写得出来是完全不同的两回事。
最后送上一句我自己常用的话:学编程不是比谁上手快,而是比谁能在“看不懂”的时候还愿意多坚持十分钟。Day02 只是起点,把这一步踩实了,后面基本都是加速度。