拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
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: can't multiply sequence by non-int of type 'str'。翻译过来是:两个字符串不能直接相乘。字符串可以用整数做重复,比如"ha" * 2得到"haha",但两个字符串相乘是没有意义的。遇到这个错,说明你需要先做int()或float()转换。这也是练习一要训练的直觉:参与数学运算前,先确认它是不是数字类型。

5.3 中英文标点混用,一报错就是一大片

最常见也最让人摸不着头脑的报错是SyntaxError: invalid character '(' (U+FF08)。注意,报错信息里的(是全角中文括号,而Python只认英文括号(。这个问题高发的原因很大程度是中文输入法没有切换。我建议一开始就用英文输入法写代码,或者写完代码先目测一遍标点,出现明显“胖”的符号基本都是中文标点。

5.4 缩进错误:Python对“对齐”有强迫症

IndentationError: unexpected indent表示某一行的空格缩进不对劲。Python用缩进定义代码块,这一段属于谁,全靠缩进对齐来区分。新手最容易犯的错是混合使用空格和Tab键。建议在编辑器里统一设置把Tab转换4个空格,或者全程只用Tab。你选一个方案,然后坚持到底,可以省掉很多莫名其妙的报错。

调试方面,我只有一条万能心法:当程序运行结果和你预想的不一样,直接在关键位置加一行print()把中间变量打出来看。比如不确定input()返回的东西到底是不是字符串,就在input后面加一行print(type(name)),它会输出<class 'str'>,你立刻什么都明白了。print是免费的探针,用它拆解程序的每一步,比盯着代码空想高效得多。

我在这篇文章里反复强调基础练习就是用的这个思路:小步快跑,边写边看,错了立刻看报错信息,用印刷式的方式加深理解。这个系列的第一课,重点不是让你背代码,而是让你在跑通几个小程序的过程中,建立“代码是逻辑表达、报错是学习线索”的完整心智。后面每一篇你都会发现,这个基础打得越牢,学新东西越快。

最后分享一个我带新人时反复看到的现象:真正拉开差距的从来不是聪明程度,而是能不能在代码跑不通的时候冷静下来,把报错信息当线索、把自己当侦探。这种习惯,就是从这些看起来有点幼稚的第一个小练习开始养成的。你也试试,真的不亏。

返回列表