2. Python基础第一讲,到底在讲什么
很多人第一次接触编程,搜索栏里打的就是"python 基础第一讲"或者"python入门"。这类标题看起来简单,背后其实藏着一个很实际的需求:我想用Python做点什么,但从哪一步开始心里完全没数。
我写这一讲,不是为了把语法书目录念一遍,而是按照"装好环境 → 跑通第一个程序 → 认识变量 → 写出第一个函数"这条主线来设计。学完之后,你至少有这三个能力:电脑上有能运行的Python环境;能看懂print、变量、数据类型、类型转换是什么意思;遇到报错知道往哪个方向排查。有了这些底子,后面你再看到"python爬虫""python写入excel""python连接公司系统实现自动拉表"这些具体场景,才真的有办法去搜、去试、去折腾。
这一讲适合三类人:完全没碰过编程的学生,想转行做数据或自动化办公的职场人,以及纯属好奇想学个新技能的朋友。如果你已经能用R、MATLAB或者Java处理数据,那这讲内容可以跳着看,重点留意变量和函数这两节的口径就行。
2.1 为什么学习路线要这样安排
编程学习有个很大的坑,就是一上来被塞了一堆"数据类型、运算符、流程控制、列表、字典、元组……"的语法清单,结果记了半个月,打开编辑器还是不知道写什么。
所以我给"python基础第一讲"定的路线是:安装 → 跑通 → 变量 → 函数。先让屏幕上出现输出,再往上加逻辑。人对于能立刻看到反馈的事情,学习效率是很高的。
另一个关键设计是,从第一讲就引入"函数"这个概念。函数是组织代码的最小模块,你可以把它理解成"给一段动作起个名字,以后反复调用"。很多同学学到后面代码写得像流水账,就是因为基础阶段没养成用函数封装逻辑的习惯,等到项目复杂了才来改,非常痛苦。
工具选型上,我建议先使用Python自带的IDLE编辑器,等基本语法熟了再切到VSCode或PyCharm。原因是IDLE零配置、零干扰,一打开就能写;VSCode虽然强大,但还要装扩展、选解释器、配置终端,这些对新手来说都是额外的心智负担。
2.2 学习预期的管理
在这一讲里,我不会承诺"学完就能写出量化交易策略""学完就能爬取全网数据",那是营销号干的事。基础第一讲真正的价值,是让你具备自我摸索的底层能力。
比如网上一搜"python画图横坐标太密集""python如何连接公司系统实现自动拉表",你能看懂那些解决方案是在说什么;再比如搜到"python定义函数""python类型转换"这类教程,你能判断它讲得対不对、适不适合自己。这个筛选和吸收的能力,比背十个知识点重要得多。
3. 环境搭建:第一个拦路虎怎么驯服
关于"python怎么安装""电脑如何装python环境",网上教程一抓一大把,但我发现真正卡住新人的往往不是步骤多,而是"装完不知道成没成功"。所以这一章我尽量把每一步讲透,包括那些教程默认你会但其实不会的细节。
3.1 下载安装的版本选择与关键勾选
去Python官网下载安装包,网址是python.org/downloads,注意识别官方域名,不要从乱七八糟的下载站下载安装包,很容易附带一堆推广软件。
建议下载Python 3.10以上的版本。虽然现在还有很多老项目在用Python 3.8,新学的话没必要刻意选旧版,新版本语法兼容性更好,第三方库支持也更全。
Windows安装时,有两件事要盯住:
勾选 "Add Python to PATH"。PATH是Windows系统用来寻找程序的路径列表,可以理解成一个通讯录。不把Python加进这个通讯录,你在终端敲python命令时,系统根本不知道去哪找它。我见过太多人死在这一步。
选择 "Install Now" 而不是 "Customize installation"。自定义安装里那些高级选项对新手没有意义,容易改出问题。
安装完成之后,验证是否成功:按Win+R,输入cmd回车打开终端,依次敲以下两条命令,每敲完一条按一次回车:
python --version pip --version第一行出现类似Python 3.12.0的输出,说明Python本体正常;第二行出现类似pip 24.0 from ...的输出,说明包管理工具也正常。两个都出来,环境搭建这一步才算真正走完。
3.2 开发环境怎么选:从IDLE到VSCode
环境搭建完之后,紧接着就是"用什么写代码"的问题。我做过一个简单的对比,帮你在初期省掉选择困难。
| 编辑器 | 上手成本 | 启动速度 | 适合阶段 | 备注 |
|---|---|---|---|---|
| IDLE | 极低,装完自带 | 快 | 第一讲到前几讲 | 零配置,适合写短代码 |
| VSCode | 中等,需要装扩展 | 中 | 学完基础语法后 | 免费、插件生态极强,主流选择 |
| PyCharm | 较高,界面复杂 | 慢 | 写正式项目时 | 社区版免费,功能完整但资源占用高 |
我个人的建议是:第一讲就用IDLE。它虽然没有代码高亮补全那些豪华功能,但恰恰因为简陋,你能把注意力放在语言本身。等练到后面,自然会产生"换个更顺手的编辑器"的诉求,那时候再切VSCode,你会觉得它简直是解放。
如果已经决定直接用VSCode,记住三个关键动作:安装Python扩展(搜索 "Python" 并安装Microsoft官方那个)、按Ctrl+Shift+P打开命令面板执行 "Python: Select Interpreter" 选择解释器、在终端里确认使用的是同一个Python环境。很多新人遇到的"代码在VSCode里跑不了""装了库却报ModuleNotFoundError",八成就是这三个动作没做全。
3.3 环境变量没配好时的手动补救
如果安装时漏勾了Add to PATH,或者是在MacOS、Linux上需要手动管理Python环境,得知道怎么补救。Windows手动配置环境变量入口比较深,但操作不难。
右键"此电脑" → "属性" → "高级系统设置" → "环境变量",在"系统变量"里找到名称为Path的项,双击打开,新增两条路径:
- Python的安装目录,通常是
C:\Users\你的用户名\AppData\Local\Programs\Python\Python3xx - 同一目录下的
Scripts子目录,这个目录放着pip等命令行工具
改完之后重新打开一个终端,再执行python --version。注意:改完环境变量之后,原来开着的终端窗口要关掉重开,因为终端只在启动时读一次环境变量。
MACOS和Linux的情况简单一些:大多系统自带Python3,直接在终端敲python3就能进交互模式。用Linux系统安装python也不复杂,Debian系发行版执行sudo apt install python3即可。但要注意,某些系统的默认Python是2.x或3.6这种老版本,命令要确认清楚,实在不行就先装python3而不是python。
3.4 pip安装第三方库的正确姿势
基础第一讲学完,你很可能立刻就想装第三方库,比如pip install numpy、pip install opencv-python。这个需求非常正常,Python强大的生态主要就是靠这些库支撑起来的。
安装库的基本命令是:
pip install numpy pip install opencv-python pip install scikit-learn如果默认源太慢、经常超时,可以临时指定国内镜像源:
pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple-i参数就是指定下载源,清华源是国内比较稳定的选择。
常见的坑有两个。第一个是pip 不是内部或外部命令,说明Scripts目录没有加入PATH,按上面3.3手动补配置。第二个是装了库但import报错,这种多数情况是终端里的Python和你编辑器的Python不是同一个,也就是"解释器选错了",VSCode用户从"Select Interpreter"改成同一个环境就能解决。
4. 第一个程序与基础语法:print只是开胃菜
环境搞定后,激动人心的时刻到了。但我建议你别满足于"运行成功"的那个绿色三角,好好抠一抠print、变量、类型转换这些基础点,它们是你后面所有代码的地基。
4.1 Hello World没你想的那么简单
在IDLE或编辑器里新建一个文件,输入这行代码:
print("python 基础第一讲")保存文件时注意文件名后缀是 .py。按F5运行,窗口里出现这行字,恭喜你,你已经跑通了人生的第一个Python程序。
但Hello World里还藏着几个以后天天用得上的细节:
print()默认会在结尾自动换行,所以每个print都是一行输出。print()里可以放多个值,用逗号分隔,输出时它们会用空格连起来。比如print("答案是", 3 + 5)输出答案是 8。- 字符串可以用双引号
"..."包着,也可以用单引号'...'包着,效果一样。嵌套引号时要注意配对,比如想打印他说:"你好",外层用单引号内层用双引号就不会冲突。 - Python3默认UTF-8编码,中文基本不会乱码。如果在某些老式cmd窗口里出现乱码,先执行
chcp 65001切到UTF-8代码页再运行。
再补充一个有意思的点:print还能直接做算术。比如print(10 / 3)会输出3.3333333333333335,这个5结尾的小数精度问题,就是后面学习浮点数时会遇到的经典现象,第一讲先混个脸熟。
4.2 变量:编程的"存储格"
如果说程序是一台做菜机器,变量就是上面的碗和盘子:把数据放进去,随取随用,还可以重新装别的东西。在Python里定义一个变量,不需要提前声明类型,直接写名字和等号就行:
count = 10 price = 3.5 name = "张三" is_student = True这里四个变量分别存了整数、浮点数、字符串、布尔值。等号右边的值会"放进"左边的变量名里,以后在代码里用到count,Python就知道你说的是10。
变量名有两条硬性规则:不能以数字开头,不能用Python关键字(比如if、for、def这些)。另外有一条习惯性约定:命名要见名知意,用user_name而不是a。等你回头维护自己写的代码时会感谢这个习惯。
Python变量还有一个非常大的特点,叫动态类型。也就是说同一个变量可以先存数字,后存字符串,Python不会拦你:
count = 10 count = "现在变成字符串了" print(count)这个特性让Python写起来很爽,但也要小心:类型变了,后续代码的行为可能完全不一样。
4.3 数据类型:int、float、str、bool、None
变量里装的数据是有类型的。Python基础阶段,掌握五个类型基本就够用了:
| 类型 | 中文名 | 例子 | 典型用途 |
|---|---|---|---|
| int | 整数 | 10、-3 | 计数、索引 |
| float | 浮点数 | 3.14、0.5 | 模拟连续值 |
| str | 字符串 | "hello" | 文本处理 |
| bool | 布尔值 | True、False | 条件判断 |
| NoneType | 空值 | None | 表示"什么都没有" |
想知道一个变量是什么类型,用type()函数:
price = 9.9 print(type(price)) # 输出 <class 'float'>第一讲里,对这些类型建立"直觉"比背定义重要。比如int和float之间有个微妙区别:3和3.0在Python眼里是不同的数据类型,但数学上它们是同一个数。这个区别在计算时会体现出来,比如10 / 2结果是5.0,而不是5,因为除法即使能整除,结果也默认是浮点数。
4.4 类型转换:让数据从一种形态变成另一种
不同类型之间往往不能直接操作。比如字符串和数字相加:
age = "25" print("年龄是" + age) # 这可以,字符串拼字符串 print(age + 1) # 报错:TypeError错误信息会提示can only concatenate str (not "int") to str,意思是"字符串只能拼接字符串,不能拼整数"。这类TypeError是新手报错里的常客,并不吓人,它只是告诉你别跨类型运算。
解决方式就是显式类型转换:
int("123") # → 123,字符串转整数 float("3.14") # → 3.14,字符串转浮点数 str(456) # → "456",整数转字符串 int(3.99) # → 3,注意是截断,不是四舍五入有几个转换容易踩坑,提前打个预防针:int("12.5")会报ValueError,因为int函数不认小数点;int("abc")也会报错。所以从用户输入中转数字时,一定要确保内容能被安全转换。
input()函数在外行人看来很简单,但它有两个地方特别容易引起混淆:输入的内容永远都是字符串;哪怕用户输入了数字,input返回的也是"数字的字符串形态"。所以正确姿势是先存到变量,再转换成需要类型:
age = input("请输入你的年龄:") age_num = int(age) print("明年你", age_num + 1, "岁")这类任务的综合训练,就是"python变量的类型练习题"里最常见的模式:定义几个变量,用type()观察类型,再用int()/float()/str()做转换,逐步理解数据形态变化在程序中的作用。
5. 函数定义与经典入门编程题实操
概念积累够了,就该动手解决问题了。下面两个例子是网上搜"python定义函数""python经典100编程题""李白打酒python""python编程求长方体体积"时非常容易撞见的内容,我把它们串起来讲,用函数的方式组织代码,一方面练手,另一方面强化"逻辑封装"的意识。
5.1 函数:给一段代码起个名字
函数的本质是"把一段动作封装起来,定义一个可复用的代码块"。定义函数用def关键字:
def greet(name): print("你好,", name)调用时写函数名加括号:
greet("张三") # 输出:你好, 张三如果函数需要返回计算结果,用return把结果送出去:
def add(a, b): return a + b result = add(3, 5) print(result) # 输出 8几个关键概念:def后面是函数名和括号里的参数列表;函数体要缩进4个空格;没有return的函数,调用后返回值是None;函数定义要先于调用执行。这些规则在第一讲阶段先记住"语法长什么样",后面循环、字典、文件操作时再反复用,慢慢就内化了。
在函数设计上,第一讲就要建立"单一职责"的直觉:一个函数只做一件事。宁可多写几个小函数,也不要写一个几百行的大函数。代码可读性和可测试性都会受益。
5.2 经典题一:李白打酒
"李白街上走,提壶去打酒;遇店加一倍,见花喝一斗;三遇店和花,喝光壶中酒;试问壶中原有多少酒?"这道题网上变体非常多。直接正向设方程,新手容易绕。但借用一个很自然的反向推导就有解了。
逆向过程是:最终喝光为0,最后一步是"见花",喝掉一斗,所以见花前有1斗;再往前一步是"遇店",酒量翻倍,那么遇店前应该是1/2斗。三次迭代,就把原来酒量反推出来。
用代码写,反向逻辑非常顺:
def original_wine(cycles=3): total = 0.0 for _ in range(cycles): total += 1 # 逆推见花:先加上喝掉的一斗 total /= 2 # 逆推遇店:再除以2,还原翻倍前 return total print(original_wine()) # 输出 0.875结果0.875斗,和手工推出来一致。这个例子说不上难,但它把"逆向思维""循环""函数封装"三个能力点全练到了。尤其注意循环里先加后除的顺序,和正向"遇店加一倍,见花喝一斗"正好相反,这就是代码和现实逻辑的映射关系。
5.3 经典题二:长方体体积
"python编程求长方体体积"是另一个高频基础题。逻辑本身简单:体积 = 长 × 宽 × 高。
def cuboid_volume(length, width, height): return length * width * height print(cuboid_volume(3, 4, 5)) # 输出 60但实际编程里,长度、宽度、高度往往是从用户输入读进来的,这就得和前面的类型转换联动:
length = float(input("请输入长:")) width = float(input("请输入宽:")) height = float(input("请输入高:")) print("体积是", cuboid_volume(length, width, height))这里用float()而不是int(),是因为输入可能是2.5这种小数。如果你用int,遇到小数又会ValueError。这个小细节,就是常说的"把边界情况考虑清楚"。
5.4 为什么第一讲就要练函数
很多基础教程会把函数讲课放到很后面,我恰恰相反。理由有两点:第一,函数能把"计算过程"变成"可命名、可复用、可传递"的单元,越早建立这种抽象能力,后面写代码的整洁度越高。第二,你以后见到"python量化交易策略代码""python爬虫""python连接oracle查询数据"这些实际场景,核心逻辑都长在函数拼装和参数传递上。虽然第一讲只是点到为止,但这个思维种子要尽早埋下。
再补充一个预告:函数和数据结构是搭配使用的。比如"python数组切片",本质上就是对一个列表按[起始:结束:步长]取片段;第一讲用不到,但它和你刚才用的range(cycles)、float(input())一样,都是基础语法的延伸。基础不牢的话,后面会到处卡壳。
6. 新手避坑:五类高频报错与排查技巧
编程入门,报错是日常。很多新手被报错劝退,不是能力问题,主要是没人告诉过他们"报错其实是程序在给你递线索"。这一章我用一个速查表,把第一讲阶段最常遇到的报错整理出来,你按表索骥,大部分问题十分钟内能解决。
6.1 常见报错与解决方案速查
| 报错信息关键词 | 出错场景 | 解决方案 |
|---|---|---|
SyntaxError: invalid syntax | 括号不配对、字符串引号漏了、写了中文符号 | 检查()""'',把中文全角符号改成英文半角符号 |
NameError: name 'xxx' is not defined | 变量/函数没定义就使用,或者名字写错 | 看是不是拼写不一致,变量必须先赋值再使用 |
TypeError: can only concatenate str (not "int") to str | 字符串和数字直接拼接 | 用str()把数字转成字符串,或格式化输出 |
ValueError: invalid literal for int() with base 10 | 把"12.5"或"abc"这类内容转int | 确认字符串内容,改用float(),或先做校验 |
ModuleNotFoundError: No module named 'numpy' | import了一个没安装的库 | 执行pip install numpy,注意是当前解释器环境中 |
前四个都是代码逻辑问题,最后一个其实是环境问题。特别提醒:当你出现ModuleNotFoundError,不要急着换源重装,先确认当前运行代码的解释器是不是你装库的那个Python。VSCode用户在右下角状态栏就能看到当前解释器路径;IDLE默认跟着系统Python走,相对不容易出错。
6.2 两个被问爆的"环境问题"
每次开课必被问到的问题之一,是"我明明pip install了numpy,代码里还是ModuleNotFoundError"。常见原因是装到了系统Python,但VSCode里选了解释器是另一个环境。这个问题的排查思路固定为:先看解释器,再看安装日志,再确认PATH。
另一个高频问题是"python画图横坐标太密集"。这个属于学到matplotlib之后会遇到的现象,本质是刻度自动生成策略过于密集,解决方法是手动设置间隔或旋转角度:
import matplotlib.pyplot as plt plt.xticks(rotation=45) # 或用 MaxNLocator 控制刻度数量 from matplotlib.ticker import MaxNLocator plt.gca().xaxis.set_major_locator(MaxNLocator(nbins=10))虽然这是后面的内容,但这里先写下来,让你对"Python问题的解法通常不止一个"有个基本认知,以后遇到不会慌。
6.3 一些承前启后的学习建议
搜热词的时候,我还看到"python pandas""python build邻接矩阵""python dataframe""python写入excel"等等。这些都属于Python生态里的中后期内容,第一讲不需要去追,但你可以知道它们的定位:pandas和dataframe是表格数据处理的底座,邻接矩阵和图论是算法竞赛常客,excel操作是办公自动化的核心。所有这些都是建立在"变量、类型、函数、控制流"四个地基之上的。
我的建议是:在第一讲结束之后,千万别急着去啃大而全的框架,先把课上这些代码多敲几遍,再尝试改参数、加条件、换输入。比如把李白打酒的循环次数改成4,看看结果怎么变;把长方体体积函数加一个validate逻辑,输入负数时给出提示。这种"小步快跑"的练习方式,比看十遍教程都管用。
7. 第一讲之后你可以做点什么
内容讲到最后,我想说点真实的体会。
我见过太多自学Python的朋友,买课、收藏教程、关注一堆公众号,但打开编辑器的次数屈指可数。其实"python基础第一讲"最核心的东西,不是某个精妙的语法,而是让你形成一个最小闭环:写代码 → 运行 → 看输出 → 改代码 → 再运行。这个闭环一旦跑起来,后面所有的学习都是在往里面加零件。
第一讲学完,你可以试着给自己布置三个小任务:把李白打酒函数改成任意循环次数;写一个函数,输入三角形的三条边,返回是否构成三角形;用input()和类型转换,写一个计算BMI的小脚本。如果都能独立完成,恭喜,你已经具备继续往下学"列表、字典、循环、文件操作"的资格了。
另外一个很值得做的动作是,从现在起保留自己写过的每一个脚本,哪怕再简陋也别删。三个月后再回头看第一讲的Hello World,你会真实感受到自己的进步。这种正反馈,比任何学习计划都持续。