ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Re:从0开始学编程:Python基础第一课——变量、输入输出与类型转换

Re:从0开始学编程:Python基础第一课——变量、输入输出与类型转换 看到这个标题估计不少人会心一笑——“Re:从0开始”这梗太熟悉了。但我用这个标题不只是玩梗是想认真说一件事编程学到某个阶段之后停下来把基础重新过一遍真的比继续追新东西要有用得多。这个系列就是我写给自己的“基础再练习”也顺手分享给正在零基础起步、或者卡在半路进退两难的你。这一篇是系列第一课不整高深的目标非常朴素在一台干净的电脑上把一个最小的程序跑起来再让这个程序和你有来有回地互动一次。整个过程大约一小时需要的只是手和耐心。如果你完全没碰过代码这篇可以当你的人生第一课如果你写过一点但总觉得根基发虚这篇就当一次快速体检。学完你至少能拥有一个能独立运行的“自我介绍”小程序以及一套后续所有编程练习都通用的思维方式。1. “Re:从0开始”不是矫情基础练习到底在练什么1.1 大多数人学编程半途而废不是因为难是因为基础有洞我做编程相关的内容这些年见过太多人卡在同一个地方循环会写、函数能调、API也翻过但一碰到稍微复杂一点的需求就开始满屏报错乱补丁。问题不在智力而在最底层的几个概念没有练成直觉。变量到底是个什么东西输入输出到底怎么流转类型转换什么时候该做、什么时候不该做——这些听起来太简单的内容恰恰是大多数翻车现场的根源。所以我做这个系列的第一个决定就是先把这些“太简单”的东西拿出来用大量练习把它练进肌肉记忆。这个系列后续会覆盖条件判断、循环、函数、字符串处理、文件读写、基础数据结构和简单算法题但每一篇都会延续这一篇的思路少讲废话概念多上能跑起来的练习并解释每个练习背后到底在锻炼哪一块底层能力。1.2 第一篇为什么从“输入—处理—输出”讲起如果你拆开任何一段程序大到电商系统小到计算器骨子里都是同一件事拿数据进来做处理把结果给出去。输入可能来自鼠标、键盘、文件、网络输出去向可能是屏幕、硬盘、服务器但核心骨架永远是这三步。第一篇把这三步通过一个具体练习完整走一遍后续所有语法知识都只是往这个骨架上填充血肉。所以这篇的练习主线是一个“自我介绍卡片”程序。它读取你输入的姓名、年龄、城市把它们拼成一段完整的话输出到屏幕上。听起来毫无成就感对吧但它把变量、字符串、输入函数、输出函数、类型转换全串起来了而且每一步都能立刻看到结果你会有一种“程序在听我说话”的真实感这种感受对新手建立信心特别重要。1.3 学完这一篇你手上会有什么一篇打完你应该能亲手写出一个这样的程序请输入你的名字林一 请输入你的城市杭州 请输入你的年龄25 你好我叫林一来自杭州今年25岁。很高兴认识你如果你能做到恭喜你已经具备了“读懂题目、拆解步骤、用代码实现、亲手调试”的最小闭环能力。这是编程这项技能里最重要的一环后面所有进阶内容在这个闭环上不断叠加而已。2. 环境准备别装全家桶两样东西足够撑起基础练习2.1 为什么选Python作为练习语言从0开始的编程基础练习我默认推荐Python理由非常实际语法接近自然语言读起来像半英文半中文的伪代码新手不用先把精力耗在分号、花括号这些对初学者并不友好的符号上。而且它的类型系统不像C或Java那么严格新手更容易把注意力集中在“逻辑”而不是“类型声明”上。等练熟了基础概念再切到Java、Go、C#这类强类型语言会轻松很多因为你已经理解了编程的核心骨架剩下的只是换一套表达方式。版本上不要纠结3.8还是3.12能正常安装、能运行就可以。建议直接装官方最新稳定版Python官网下载页会直接推荐正确的版本按默认选项装完即可。安装过程的唯一注意点Windows上安装时勾选“Add Python to PATH”那一项。这一点很重要否则命令行会找不到python命令。我见过不少新手在这卡了半小时就是这一钩没打上。2.2 编辑器选择VS Code或者纯文本编辑器二选一环境准备最容易犯的错是花大量时间研究IDE。我的建议是基础阶段不要装Anaconda也不要开Jupyter Notebook更不要碰那些重型IDE。原因不是它们不好而是它们会把太多细节隐藏起来让你误以为“代码本来就是在某种神奇环境里跑起来的”。基础练习阶段你需要的是让“代码文件”和“运行结果”之间的关系透明可见。我日常给新手推荐两个方案都是踩过坑之后的经验总结方案工具优点缺点适合谁方案一VS Code带语法高亮、自动补全、内置终端需要简单配置界面信息稍多能接受陌生界面愿意花20分钟熟悉工具的人方案二系统自带文本编辑器 命令行零配置完全透明能看清每一步没有高亮打错了不容易一眼发现极度追求简单、不想折腾环境的人两个方案我都有学生长期使用效果都不错。方案一更适合现代开发习惯方案二更适合想要极致清晰理解“文件与执行关系”的新手。我个人的倾向是零基础纯新手工方案二用笔记本自带的编辑器写代码存成一个.py文件再到命令行里运行这样能非常清晰地感觉到“程序是文件被解释执行的结果”而不是某个IDE里按下绿色按钮的魔法。2.3 装完先验证三件事不管选哪条路装完环境后请依次在命令行执行并确认python --version能打印出类似Python 3.12.4就算通过然后建一个目录专门放练习文件比如在D盘建code_practice以后所有练习都放这里。最后在文本编辑器里新建一个文件存成hello.py敲一行print(hello)回到命令行先cd到文件所在目录再执行python hello.py屏幕上出现hello你的环境就算正式准备好了。这个过程看起来繁琐但它同时教会了三件事文件要保存成什么样子、程序要在哪里运行、报错了去哪里看。这三件事一旦建立起来后面所有练习都会顺畅很多。3. 核心操作手把手让程序读你的输入再回答你一句话3.1 第一步print到底在干什么从print(hello)开始。这一行代码看起来简单里面其实藏着两个概念print是一个函数作用是把括号里的内容送到屏幕上hello是一个字符串字面量也就是一段文本数据。所以这行代码的本质是“把一段文本数据通过输出函数显示出来”这是所有程序输出端的起点。字符串在Python里必须放在引号里双引号或单引号都可以但一定都是英文标点。这一点我用加粗提醒是因为新手会在这里中招无数次用中文输入法打的引号Python完全不认。如果你运行时报了SyntaxError: invalid character先低头看代码里的引号是中文还是英文。3.2 变量一个带标签的盒子不是数学里的“未知数”新手对变量最大的误解来自数学课上的“设x等于”。Python里的变量更像是一个带标签的盒子盒子存放数据标签用来看名字。写法也直白name 林一 city 杭州 age 25第一行的意思是把字符串林一装进一个叫name的盒子。以后想用这个名字就不用再敲一遍“林一”直接敲name就行。注意这里不是“等于”而是“把右侧的值放进左侧的盒子”这个动作叫赋值。所以age 25读作“把25赋值给age”而不是“age等于25”。变量名也有规则只能包含字母、数字、下划线不能用数字开头不能占用Python的关键字比如if、for、class。命名最好见名知意用英文例如用户名用username而不是u。我见过太多人写完代码隔一周再看连a和b是干什么的都忘了命名规范从一开始就要养成习惯。3.3 第二步input()把控制权交给用户print负责输出input就负责输入。它执行时程序会停下来等你在终端里敲一段文字按下回车这段文字就会作为结果被拿到程序里来name input(请输入你的名字)这里括号里的是提示文字会先显示在屏幕上然后程序暂停等你输入。你敲的内容最终装进了name这个变量。这个机制看起来普通却是几乎所有交互式程序的命脉。这里有一个关键陷阱必须提前交代input()返回的东西永远是字符串。哪怕用户输入的是25到程序里也是一个字符串25而不是数字25。这意味着如果你直接拿它去做数学运算比如age * 2会直接报错因为字符串不能和数字相乘。下一节的练习里我们会专门用一道题来练这个转换。3.4 第三步把零散数据拼成一句完整的话拿到三个变量之后最自然的输出方式是拼字符串。Python有无线程的拼接方式基础阶段我最推荐的是f-string也就是在字符串前面加一个f然后用花括号把变量名“嵌入”字符串里面print(f你好我叫{name}来自{city}今年{age}岁。很高兴认识你)这一行代码花括号里的内容会被替换成变量的实际值其余文字原样输出。三种常用拼接方式的对比新手阶段就可以心里有个谱方式写法可读性推荐度加号拼接你好我叫 name低容易漏引号不推荐新手日常使用format方法你好我叫{}.format(name)中可以了解不常用f-stringf你好我叫{name}高直观强烈推荐3.5 完整程序与运行结果把前面的部分拼在一起完整的intro.py是这样name input(请输入你的名字) city input(请输入你的城市) age input(请输入你的年龄) print(f你好我叫{name}来自{city}今年{age}岁。很高兴认识你)运行一次效果就是我开头展示的那样。很多新手第一次跑通这段代码时会觉得“就这”。但你看一下它涵盖的内容字符串、变量、赋值、输入输出、占位替换——这一套流程几乎是所有真实程序的最小公共结构。你在银行ATM上输入取款金额再去处理余额背后的骨架跟这段代码是同构的。理解了这一点接下来再学任何语法你都不会再觉得它们是孤立的点。4. 三道基础练习题的完整拆解从读题到跑通的全过程我在带新手的过程中发现直接给代码让人抄效果很差。人都需要“自己先卡住一次再看答案”的过程那种豁然开朗的感觉才是记忆最深的。所以下面的练习建议你先读题然后自己试着写10分钟写不出来再往下看拆解。4.1 练习一长方形面积计算器——字符串转数字的第一课题目编写程序提示用户输入长方形的长和宽然后输出面积。思路拆解面积等于长乘以宽但input()返回的是字符串。字符串不能做数学乘法所以第一步必须转成数字。length input(请输入长方形的长) width input(请输入长方形的宽) length int(length) width int(width) area length * width print(f长方形的面积是{area})这里关键动作是int()。它把一个只包含数字的字符串比如5转换成整数5之后才能参与乘法。你也可以一步到位写成length int(input(...))但分两步写更容易看清“输入字符串”和“数字类型”是两个东西。如果你希望支持小数把int换成float即可。运行效果请输入长方形的长5 请输入长方形的宽3 长方形的面积是15这道题的核心考点就一个类型转换。后续几乎所有实用程序里都躲不开读入用户输入后转成数字再计算的场景。这里练熟练了后面处理价格计算、成绩统计都会省力很多。4.2 练习二欢迎消息生成器——字符串拼接的花式玩法题目编写程序读取用户输入的姓名和喜欢的一件事物输出一条格式为“XX希望你能一直热爱YY”的祝福消息。思路拆解这道题不涉及数字本质是f-string的综合运用顺便练一下输入的多次读取。name input(你的名字) thing input(你最喜欢的一件事) print(f{name}希望你能一直热爱{thing}。)很简单是吗但你可以试着给自己加点难度把这句话重复三遍。你需要用到一个神奇的符号星号*它可以重复字符串message f{name}希望你能一直热爱{thing}。 print(message * 3)运行结果会连在一起林一希望你能一直热爱画画。林一希望你能一直热爱画画。林一希望你能一直热爱画画。如果你希望每句换一行就在字符串末尾加一个换行符\n。这道题练的是“组合数据”的能力把用户提供的多个信息以指定格式整合成一句话。真实世界的报告生成、邮件模板、通知文案全是这个套路。4.3 练习三年龄判断——if语句与缩进的第一次亲密接触题目读取用户的年龄如果大于等于18输出“已成年”否则输出“未成年”。如果年龄大于等于60额外输出“记得按时体检”。思路拆解出现了分支逻辑这就要引入if。注意它后面跟一个冒号下一行必须缩进缩进是Python里划分代码块的方式不像其他语言用花括号。age int(input(请输入你的年龄)) if age 60: print(记得按时体检。) elif age 18: print(已成年。) else: print(未成年。)执行逻辑从上往下年龄先和60比较满足就输出“记得按时体检”不满足再和18比较还不满足就进else。这个“从上往下逐一筛选”的顺序是if结构最容易出错的地方。你把大于等于60的判断放在最上面是因为它是最特殊的条件。如果反了60岁以上的人先进了“已成年”分支后面的体检提醒就永远轮不到。运行效果请输入你的年龄70 记得按时体检。如果你忘了缩进Python会直接报IndentationError见多了就习惯了。这道题是你第一次接触到“代码可以根据不同情况走不同路径”这也是程序真正从“线性执行”走向“智能判断”的转折点。5. 第一次练习十有八九会遇到的问题我见过的真实报错与解救方法这一节我专门总结新手第一次写代码时最容易踩的坑所有这些案例都来自真实带新人的过程不是网上随便复制来的。5.1 NameError与变量名拼写不一致最常见的一个报错是NameError: name length is not defined。明明刚才还定义了length怎么突然就不认识了几乎都是因为后面写成了lenght。这一类错误的本质是Python严格按照变量名来查找盒子只要标签对不上它就认为盒子不存在。排查方法就是对比报错里的名字和定义的名字一字一字核对。5.2 字符串与数字相乘引发的 TypeError有人写了5 * 5立刻得到TypeError: cant multiply sequence by non-int of type str。翻译过来是两个字符串不能直接相乘。字符串可以用整数做重复比如ha * 2得到haha但两个字符串相乘是没有意义的。遇到这个错说明你需要先做int()或float()转换。这也是练习一要训练的直觉参与数学运算前先确认它是不是数字类型。5.3 中英文标点混用一报错就是一大片最常见也最让人摸不着头脑的报错是SyntaxError: invalid character (UFF08)。注意报错信息里的是全角中文括号而Python只认英文括号(。这个问题高发的原因很大程度是中文输入法没有切换。我建议一开始就用英文输入法写代码或者写完代码先目测一遍标点出现明显“胖”的符号基本都是中文标点。5.4 缩进错误Python对“对齐”有强迫症IndentationError: unexpected indent表示某一行的空格缩进不对劲。Python用缩进定义代码块这一段属于谁全靠缩进对齐来区分。新手最容易犯的错是混合使用空格和Tab键。建议在编辑器里统一设置把Tab转换4个空格或者全程只用Tab。你选一个方案然后坚持到底可以省掉很多莫名其妙的报错。调试方面我只有一条万能心法当程序运行结果和你预想的不一样直接在关键位置加一行print()把中间变量打出来看。比如不确定input()返回的东西到底是不是字符串就在input后面加一行print(type(name))它会输出class str你立刻什么都明白了。print是免费的探针用它拆解程序的每一步比盯着代码空想高效得多。我在这篇文章里反复强调基础练习就是用的这个思路小步快跑边写边看错了立刻看报错信息用印刷式的方式加深理解。这个系列的第一课重点不是让你背代码而是让你在跑通几个小程序的过程中建立“代码是逻辑表达、报错是学习线索”的完整心智。后面每一篇你都会发现这个基础打得越牢学新东西越快。最后分享一个我带新人时反复看到的现象真正拉开差距的从来不是聪明程度而是能不能在代码跑不通的时候冷静下来把报错信息当线索、把自己当侦探。这种习惯就是从这些看起来有点幼稚的第一个小练习开始养成的。你也试试真的不亏。
返回列表