
我第二天的学习笔记来了。先说结论这一天没有太烧脑的东西但所有后续代码的“手感”都是从这一天的练习里长出来的。如果你也是边工作边自学、每天只能挤出一两个小时的状态这篇笔记应该能帮你少走几段弯路。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的标签。以后你只要喊namePython 就知道你指的是那块地方里的“张三”。这里有个特别容易踩的坑不是数学里的“等于”而是“赋值”意思是把右边的值装进左边的名字里。所以你可以写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 返回的一定是字符串。即使你在键盘上敲了数字18Python 拿到的也是字符串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-stringValueError: 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 只是起点把这一步踩实了后面基本都是加速度。