拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Python基础语法入门:从环境搭建到条件循环一次讲透

大家好欢迎来到《Python 基础语法上》这一课。这一篇是真正意义上的 Python 入门第一课目标很简单让零基础的同学能看懂代码、能动手运行代码、能理解 Python 最基本的语法规则。内容不会贪多但每一个知识点都是后续做爬虫、数据处理、Web 开发、自动化脚本时绕不开的基础部件。如果你之前没有接触过任何编程语言这篇文章很适合你。如果你有其他语言基础比如 C 语言、Java也可以快速过一遍重点看 Python 和它们不一样的地方比如缩进规则、动态类型、for 循环的写法。学完这一篇你应该能做到独立安装 Python 环境、写出并运行第一个 .py 文件、理解变量和数据类型、完成输入输出、使用条件判断和循环解决简单问题。这些能力足够支撑你继续学习函数、文件操作、面向对象等下一个阶段的内容。1. Python 是什么为什么要学它1.1 Python 的历史与定位Python 诞生于 1991 年由 Guido van Rossum 设计并推广。它的名字来源于英国喜剧团体 Monty Python而不是蟒蛇。Python 是一种解释型、面向对象、动态数据类型的高级编程语言。所谓解释型指的是 Python 代码不需要像 C 语言那样先编译成机器码再运行而是由 Python 解释器逐行读取、逐行执行。这让 Python 的开发效率非常高——写完代码就能立刻看到结果非常适合做原型设计和快速迭代。1.2 Python 能做什么Python 的应用范围非常广对于新手来说这其实是一个很大的优势数据分析与可视化比如使用 pandas、matplotlib 处理表格数据并绘图。网络爬虫用 requests 抓取网页、用 BeautifulSoup 解析 HTML。Web 开发Django、Flask 都是非常成熟的 Python Web 框架。人工智能与机器学习TensorFlow、PyTorch 等主流框架都以 Python 为主要接口。自动化运维与脚本工具日常文件批量处理、定时任务、命令行工具。所以无论你以后想走哪个方向Python 基础语法都是第一道门槛。语法掌握得越扎实后面学任何框架的时候越轻松。1.3 Python 2 和 Python 3 的区别现在学习 Python直接使用 Python 3 即可完全不用考虑 Python 2。Python 2 已于 2020 年 1 月 1 日停止官方维护目前绝大多数第三方库也都只支持 Python 3。在学习基础语法时只需要知道一个最常见的差异Python 2 中print是语句print helloPython 3 中print()是函数print(hello)。我们后续所有示例都基于 Python 3。2. 环境准备与第一个 Python 程序2.1 安装 Python 解释器在开始写代码之前先确保你的电脑上已经安装了 Python。打开终端Windows 上是 CMD 或 PowerShellmacOS/Linux 上是 Terminal输入python --version如果系统提示python 不是内部或外部命令可能需要尝试python3 --version如果还不可以说明需要手动安装 Python。Windows 用户推荐从 Python 官网python.org下载安装包。安装时务必勾选Add Python to PATH选项否则后续在命令行中使用 python 命令会提示找不到。macOS 用户也可以使用 Homebrew 安装brew install python3版本需要根据你的项目实际情况调整本文示例以常见稳定版本为例重点演示语法本身。不管装的是 3.8 还是 3.12本文涉及的基础语法都是通用的。2.2 IDE 与编辑器选择初学者不需要一上来就使用非常复杂的 IDE但也不建议用记事本写代码。推荐以下几种IDLE安装 Python 时自带适合第一次体验。PyCharm功能强大适合项目开发社区版免费。VS Code插件丰富轻量好用配置 Python 环境也很方便。不管用哪个编辑器请务必把文件保存为 UTF-8 编码并在文件开头保留默认的字符集设置。Python 3 默认使用 UTF-8所以中文字符串一般不会出现乱码。2.3 编写第一个程序新建一个文件命名为hello.py输入以下内容print(Hello, Python!)在终端中进入该文件所在目录执行python hello.py输出结果Hello, Python!是不是很简单print()是 Python 中最常用的内置函数它的作用是把括号里的内容输出到屏幕上。试着修改一下在字符串中使用中文print(你好Python)只要文件保存为 UTF-8 编码运行结果会正常显示你好Python需要注意的是Python 中的字符串内容里的中文没有特殊处理但你的代码文件本身必须采用 UTF-8 编码否则读取时可能报SyntaxError或出现乱码。2.4 Python 的交互式模式除了运行 .py 文件Python 还提供了交互式解释器。在终端中输入python后回车会进入类似下面的界面Python 3.x.x ... Type help, copyright, credits or license for more information. 在提示符后面直接输入代码回车即可立即看到结果 print(hello) hello 1 2 3交互模式适合快速验证简单语法但写完整程序时建议保存为 .py 文件方便重复运行和修改。3. 变量、数据类型与类型转换3.1 变量给数据起个名字变量是编程中最基础的概念。可以把变量理解为一个贴了标签的盒子盒子里面装的就是数据。在 Python 中创建变量不需要声明类型直接赋值即可name 小明 age 18 score 95.5这里创建了三个变量name变量保存了一个字符串小明。age变量保存了一个整数18。score变量保存了一个浮点数95.5。Python 是一种动态类型语言意思是变量的类型由它保存的值决定而且可以在程序运行过程中改变x 10 print(x) x 现在变成字符串了 print(x)输出10 现在变成字符串了这在某些场景下很方便但在项目开发中不建议频繁改变变量的类型否则会增加代码阅读和排错的难度。变量命名需要遵循几条规则变量名只能包含字母、数字、下划线且不能以数字开头。变量名不能是 Python 的关键字比如if、for、while、def、class等。变量名区分大小写Name和name是两个不同的变量。推荐使用小写字母加下划线例如user_name、total_price这种风格叫 snake_case。3.2 常用数据类型Python 中最常用的基础数据类型有类型名称作用示例int整数10、-3、0float浮点数小数3.14、-2.5str字符串hello、pythonbool布尔值True、Falselist列表[1, 2, 3]tuple元组(1, 2, 3)dict字典{name: 小明}set集合{1, 2, 3}这一课重点介绍前四种列表、字典等容器类型会在后续课程中单独讲解。在 Python 中可以使用type()函数查看变量的类型a 10 b 3.14 c hello d True print(type(a)) print(type(b)) print(type(c)) print(type(d))输出结果class int class float class str class bool3.3 字符串的引号问题Python 中字符串可以使用单引号也可以使用双引号s1 hello s2 world两种写法是等价的。那什么时候要用不同的引号呢当字符串内容本身包含引号时s1 He said hello s2 She said hi如果你想让字符串同时包含单引号和双引号可以使用三引号s3 这是包含 单引号 和 双引号 的字符串三引号还有一个作用写多行字符串。text 第一行 第二行 第三行 print(text)3.4 类型转换在实际开发中经常需要把一种类型转换成另一种类型。例如通过input()输入的数字默认是字符串需要转换成整数才能参与数学运算。num_str 123 num_int int(num_str) print(num_int 1)输出124常用的类型转换函数函数作用示例int()转换为整数int(123)得到123float()转换为浮点数float(3.14)得到3.14str()转换为字符串str(123)得到123bool()转换为布尔值bool(0)得到False注意int()转换字符串时字符串必须是合法的数字形式否则会抛出ValueError。例如int(abc)会报错。3.5 动态类型与强类型Python 是动态类型但也是强类型语言。所谓强类型指的是不同类型的数据在某些运算中不能自动混用。例如字符串和整数直接相加会产生异常print(hello 123)运行结果TypeError: can only concatenate str (not int) to str正确的写法是先把数字转换为字符串print(hello str(123))输出hello123这个特性看似繁琐但能在程序早期发现类型错误避免一些隐蔽的 bug。4. 输入输出与格式化4.1 input()获取用户输入Python 内置了input()函数用来读取用户在终端中输入的内容。input()接收一个字符串参数作为提示语返回值永远是字符串类型。name input(请输入你的名字) print(你好, name)运行过程如下请输入你的名字张三 你好 张三注意这里print(你好, name)的输出中逗号会在两个字符串之间自动添加一个空格。如果你不希望有空格可以使用字符串拼接print(你好 name)4.2 int input数字运算因为input()返回的是字符串所以需要先转换age_str input(请输入你的年龄) age int(age_str) print(明年你的年龄是, age 1)运行示例请输入你的年龄20 明年你的年龄是 21如果用户输入的内容无法转换为整数比如abc程序会抛出ValueError。后面讲到异常处理时会介绍更健壮的写法。4.3 print() 的完整用法print()函数可以接收多个参数它们默认用空格分隔print(a, b, c)输出a b c可以通过sep参数自定义分隔符print(a, b, c, sep-)输出a-b-cend参数可以指定输出结束后的字符默认是换行符\nprint(第一行, end) print(第二行)输出第一行第二行4.4 格式化字符串f-string在 Python 3.6 之后推荐使用 f-string 来格式化字符串。f-string 是在字符串前面加上f然后在字符串内部使用{}直接引用变量name 李雷 age 25 print(f我的名字是{name}今年{age}岁。)输出我的名字是李雷今年25岁。在花括号中还可以直接写表达式a 10 b 20 print(fa b {a b})输出a b 30f-string 还支持格式控制比如保留小数位数pi 3.1415926535 print(f圆周率取两位小数{pi:.2f})输出圆周率取两位小数3.14:.2f的意思是保留两位小数。这个语法在数据分析和报表输出中非常常用。4.5 转义字符在字符串中某些特殊字符需要使用反斜杠\进行转义。最常用的几个转义字符含义\n换行\t制表符Tab\\反斜杠本身\单引号\双引号示例print(第一行\n第二行) print(列1\t列2)输出第一行 第二行 列1 列25. Python 运算符详解5.1 算术运算符Python 中的算术运算符与数学中的写法基本一致但有几个需要特别注意的差异。a 10 b 3 print(a b) # 13 print(a - b) # 7 print(a * b) # 30 print(a / b) # 3.3333333333333335 print(a // b) # 3 print(a % b) # 1 print(a ** b) # 1000/是真正的除法结果一定是浮点数即使能整除例如4 / 2的结果是2.0。//是整除只保留商的整数部分向下取整。%是取余用来判断一个数能否被另一个数整除特别方便。**是幂运算10 ** 3表示 10 的三次方。5.2 整数与浮点数混合运算当一个整数和一个浮点数进行运算时结果是浮点数print(10 0.5) print(2 * 3.0)输出10.5 6.0这一点在 Python 的算术运算中很容易验证。5.3 比较运算符比较运算符的结果总是布尔值True或False。a 5 b 8 print(a b) # False print(a b) # True print(a b) # False print(a ! b) # True print(a 5) # True print(b 8) # True是比较两个值是否相等而是赋值两者千万不能混淆。5.4 逻辑运算符Python 中逻辑运算符是三个英文单词and、or、not。age 20 score 85 print(age 18 and score 60) # True print(age 18 or score 60) # True print(not age 18) # Falseand两边都为真时结果才为真。or两边至少一个为真时结果为真。not取反。5.5 赋值运算符除了简单的Python 还提供了复合赋值运算符a 10 a 5 # 等价于 a a 5 print(a) # 15 a - 3 # 等价于 a a - 3 print(a) # 12 a * 2 # 等价于 a a * 2 print(a) # 24 a / 4 # 等价于 a a / 4结果是浮点数 print(a) # 6.05.6 字符串的运算符字符串也支持一些运算符比如用于拼接*用于重复s1 Hello s2 World print(s1 s2) print(s1 * 3)输出Hello World HelloHelloHello字符串还支持成员运算符in和not ins hello python print(python in s) # True print(java in s) # False6. 条件控制if / elif / else6.1 if 语句的基本结构程序中的条件判断是让代码聪明起来的关键。Python 使用if、elif、else来实现分支逻辑。基础语法如下if 条件: # 条件成立时执行的代码块 print(条件成立)注意Python 中最重要的一条语法规则是使用缩进来表示代码块。同一个代码块的每一行必须保持相同的缩进量通常使用 4 个空格。6.2 单分支、双分支与多分支age 18 if age 18: print(你是成年人) else: print(你是未成年人)当有多个条件需要依次判断时使用elifscore 85 if score 90: print(优秀) elif score 80: print(良好) elif score 60: print(及格) else: print(不及格)运行输出良好这段代码的执行顺序是从上到下依次判断条件一旦某个条件成立执行对应的代码块然后跳过后面的所有elif和else。因此条件的顺序很重要。如果把score 80放在score 90前面85 分就会先匹配到良好而不是优秀。6.3 嵌套判断在条件分支内部还可以继续嵌套新的if语句age 20 has_id_card True if age 18: if has_id_card: print(可以进入网吧) else: print(请出示身份证) else: print(未成年人禁止进入)嵌套层次不宜过深超过两层时建议考虑逻辑重构。6.4 条件表达式的写法Python 提供了一种简洁的三元表达式写法适用于简单的二选一逻辑age 20 result 成年人 if age 18 else 未成年人 print(result)这行代码等价于if age 18: result 成年人 else: result 未成年人三元表达式可以让代码更紧凑但嵌套使用会严重影响可读性不推荐。6.5 条件判断的常见误区在 Python 中某些值在参与布尔判断时会被视为False它们包括0 和 0.0空字符串空列表[]空字典{}空元组()None其他值都被视为True。示例如下name if name: print(name 不为空) else: print(name 为空)输出name 为空利用这个特性可以简化很多判断但刚开始学习时建议显式写清楚条件比如if name ! 可读性更好。7. 循环for 和 while7.1 for 循环与 range()for循环在 Python 中通常用于遍历可迭代对象。最经典的用法是配合range()函数实现指定次数的循环。for i in range(5): print(i)输出0 1 2 3 4注意range(5)生成的数字是从 0 开始到 4 结束不包含 5。这是编程中常见的左闭右开区间风格。如果想从指定数字开始可以传入两个参数for i in range(2, 6): print(i)输出2 3 4 5还可以指定步长for i in range(1, 10, 2): print(i)输出1 3 5 7 9如果需要循环变量递减可以给 range 传负步长for i in range(5, 0, -1): print(i)输出5 4 3 2 17.2 for 循环遍历字符串字符串是字符的有序序列所以也可以直接使用for遍历word Python for ch in word: print(ch)输出P y t h o n7.3 while 循环while循环在条件成立时反复执行代码块直到条件不成立为止。count 0 while count 5: print(count) count 1输出0 1 2 3 4这里必须记得在循环体内更新count否则会陷入死循环。7.4 break 与 continuebreak用来结束整个循环continue用来跳过本轮循环的剩余代码进入下一轮。for i in range(1, 10): if i 5: break print(i)输出1 2 3 4continue示例for i in range(1, 6): if i 3: continue print(i)输出1 2 4 57.5 else 与循环的搭配Python 的循环结构有一个独特之处可以在while或for循环结束后使用else子句。只有在循环正常结束没有被 break 中断时else中的代码才会执行。for i in range(1, 6): if i 3: break print(i) else: print(循环正常结束)输出1 2因为第 3 次循环时触发了break所以else没有执行。如果把break去掉else就会执行。这个特性在查找类场景中比较实用比如判断一个数是否存在。7.6 循环嵌套循环内部还可以包含循环。下面是一个简单的乘法口诀表for i in range(1, 10): for j in range(1, i 1): print(f{j} x {i} {i * j}\t, end) print()输出1 x 1 1 1 x 2 2 2 x 2 4 1 x 3 3 2 x 3 6 3 x 3 9 ...这段代码中外层循环控制行数内层循环控制每一行输出的表达式个数。end让 print 不换行\t用制表符对齐。8. 综合实战一个简单的成绩评级程序现在我们把前面学到的知识点串起来写一个完整的实战程序。8.1 需求分析程序功能提示用户输入一个 0 到 100 的分数。如果输入无效不是数字或超出范围给出提示。根据分数输出评级90 分以上为 A80 到 89 分为 B70 到 79 分为 C60 到 69 分为 D60 分以下为 E程序支持多次输入输入exit时退出。8.2 代码实现print(欢迎使用成绩评级系统) while True: # 获取用户输入 user_input input(请输入成绩输入 exit 退出) # 判断是否退出 if user_input exit: print(已退出系统) break # 尝试转换为浮点数 score float(user_input) # 判断成绩是否在有效范围内 if score 0 or score 100: print(请输入 0 到 100 之间的数字) continue # 根据分数评级 if score 90: grade A elif score 80: grade B elif score 70: grade C elif score 60: grade D else: grade E print(f成绩{score} 分评级{grade})8.3 运行结果示例欢迎使用成绩评级系统 请输入成绩输入 exit 退出95.5 成绩95.5 分评级A 请输入成绩输入 exit 退出72 成绩72.0 分评级C 请输入成绩输入 exit 退出exit 已退出系统注意示例中的float(user_input)没有做异常处理如果用户输入abc程序会报错。这个问题的解决方案会在讲解异常处理时补充。9. 常见错误与排查思路错误现象常见原因解决思路SyntaxError: invalid syntax冒号遗漏、括号不匹配、缩进不一致检查报错行附近的语法重点看冒号和括号IndentationError: unexpected indent代码缩进不一致混用了空格和 Tab统一使用 4 个空格缩进NameError: name xxx is not defined变量名拼写错误或变量在使用前未赋值检查拼写确认变量已定义TypeError: can only concatenate str (not int) to str字符串和整数直接使用拼接使用str()转换或改用 f-stringValueError: invalid literal for int()int()转换了非数字字符串先确认输入内容或使用异常处理ZeroDivisionError: division by zero除数为 0在运算前检查除数是否为 0中文乱码文件编码不是 UTF-8保存为 UTF-8 编码下面演示一个典型的缩进错误if True: print(hello)运行时报错File test.py, line 2 print(hello) ^ IndentationError: expected an indented block解决办法是缩进if True: print(hello)还有一个常见情况if、for、while等语句末尾忘记写冒号if True print(hello)报错File test.py, line 1 if True ^ SyntaxError: invalid syntax初学者遇到这些报错不必紧张Python 的报错信息已经指出了具体文件和行号按图索骥去检查即可。10. 最佳实践与学习建议10.1 编码规范虽然 Python 对代码格式要求很宽容但建议一上手就养成好习惯缩进统一使用 4 个空格不要在代码中混用 Tab 和空格。变量名要有含义a、b、c不适合在大型项目中使用user_name、total_price更清晰。在运算符两侧加一个空格例如a b而不是ab。逗号后面加一个空格例如print(a, b)而不是print(a,b)。每行代码不宜过长超过 79 个字符时考虑换行。10.2 代码注释注释是对代码的解释说明Python 使用#表示单行注释# 计算圆的面积 radius 5 area 3.14 * radius ** 2 print(area)多行注释可以使用三引号 本函数用来计算两个数的和 参数 a: 第一个数 参数 b: 第二个数 返回值: 两数之和 好的注释能帮助别人以及三个月后的自己快速理解代码意图。但不要写过于冗长的注释注释应该解释为什么而不是逐行翻译代码。10.3 声明变量与命名风格在 Python 中类名通常使用大驼峰StudentInfo函数名和变量名使用小写加下划线get_user_info、user_name常量使用全大写MAX_VALUE。虽然这些不是语法强制要求但是社区通用的约定。10.4 边学边练学习编程最关键的是动手。每看完一个小节都可以打开 Python 交互模式或者创建一个 .py 文件把示例代码敲一遍。敲代码的过程和抄代码完全是两回事前者会逼你注意每一个标点和空格。下面给出几个简单的练习题建议独立完成输入两个数字输出它们的和、差、积、商。输入一个年份判断它是否为闰年年份能被 4 整除且不能被 100 整除或者能被 400 整除。使用循环输出 1 到 100 之间的所有偶数。使用 while 循环计算 1 到 100 的和。打印一个由*组成的直角三角形第一行 1 个第二行 2 个以此类推。10.5 善用官方文档遇到不确定的语法细节最权威的参考是 Python 官方文档地址是 docs.python.org。搜索引擎也能帮你解决问题但要注意判断资料是否基于 Python 3以及是否适用于你当前的版本。11. 下一步学习方向这一篇我们完成了 Python 基础语法的上篇重点内容包括Python 环境搭建与第一个程序变量、数据类型与类型转换输入输出与 f-string 格式化各类运算符的使用if 条件判断for 和 while 循环一个完整的成绩评级实战程序常见语法错误的排查思路这些都是 Python 中最核心、最基础的部分。掌握了这些内容你其实已经能写出一些简单的自动化脚本了比如批量生成文件、循环输出报告、处理数学计算等。下一篇基础语法下篇通常应该围绕这几个方向展开列表、元组的操作字典与集合函数定义与参数传递文件读写模块与包的使用建议在学习这些内容之前先把本课涉及的基础语法多练习几遍。每道练习题都亲自动手写一遍再对照思路优化。如果文章中有什么不清楚的地方也欢迎在评论区留言交流。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门