简介:这份Python基础语法合集面向零基础编程入门者与需要系统梳理语法要点的自学者,围绕输入输出、变量命名、条件判断与数据类型四条主线展开,帮助读者在动手实践中建立对Python语言的基本认知。资源包内含1个PDF文档,压缩后约1.37MB,篇幅紧凑,便于在电脑或移动设备上随时翻阅,适合作为课堂笔记的补充或自学路线的起步材料。文档从print()与input()的四种打印方式讲起,延伸到变量命名规则、if/elif/else多向判断与嵌套写法,并系统梳理字符串、整数、浮点数及列表、字典、元组等复合类型,配合大量可直接运行的示例代码与输出结果,让抽象概念变得直观可感。目前已有6156人学习下载,说明其内容组织与讲解方式得到了入门群体的认可,适合希望用一份轻量资料快速打通Python语法基础的读者。
1. 从一份 PDF 说起:Python 基础语法到底该练到什么程度
很多人学 Python 卡在同一个地方:语法书翻了三遍,print会写,if会背,真让自己写个能跑的小工具,还是不知道从哪下手。问题不在智商,在于大多数资料把语法点拆成了孤立的知识块,缺少一条从「敲进去」到「跑起来」的完整链路。这份《Python基础语法合集.pdf》走的是另一条路——它把输入输出、变量命名、条件判断、数据类型、列表字典操作、循环这几块最核心的地基,用大量可直接在交互环境里验证的代码片段串了起来。适合谁?刚接触编程、需要一份能对着敲的速查手册的人;也适合写了半年脚本、想回头把基础概念理清楚的从业者。下面我不复述 PDF 目录,而是按「怎么把它用起来、哪里容易翻车」的思路拆一遍。
2. 输入输出与变量命名:从 print 的四种写法到命名红线
2.1 print 的四种调用方式与转义字符
print()看起来简单,但括号里放什么、引号怎么选,直接决定了输出结果是否符合预期。PDF 里归纳了四种典型用法,我按实际调试顺序重新排一下。
第一种,不带引号,让解释器先算再打印。适合快速验证表达式结果:
# 不带引号:解释器先计算表达式,再输出结果 print(1 + 1) # 输出 2 print(2 ** 10) # 输出 1024第二种和第三种,单引号与双引号,作用完全等价,选择依据只有一个——字符串内部有没有冲突的引号。内部有单引号就用双引号包,反之亦然:
# 单引号与双引号等价,按内部字符选择 print('秋水共长天一色') # 原样输出 print("Let's go") # 内部有单引号,外层用双引号 print('Let\'s go') # 或者用转义字符 \' 处理第四种,三引号,用于多行文本。PDF 里演示了'''...'''直接换行,同时也提到\n可以达到同样效果。实际写脚本时,三引号更适合长段说明文字,\n更适合在单行字符串里插入换行:
# 三引号实现多行输出 print('''第一行 第二行 第三行''') # 转义字符 \n 实现换行 print('第一行\n第二行\n第三行')参数层面注意一点:print()默认以换行结尾,如果不想换行,需要显式传end参数,比如print('a', end='')。PDF 没展开讲这个,但实际写循环输出时经常用到。
2.2 input 收集信息与变量命名的五条硬规则
input()的作用是把用户输入的内容赋值给变量。PDF 里的例子是name = input('请输入你的 forchange ID:'),这里有个容易忽略的点:input()返回的永远是字符串类型,哪怕用户输入的是数字。后面要做数值运算,必须用int()或float()转换。
# input 返回字符串,数值运算前必须转换 age = input('请输入年龄:') # 假设输入 25 print(type(age)) # <class 'str'> age_num = int(age) # 转换为整数 print(age_num + 1) # 输出 26变量命名这块,PDF 列了五条规则,我把它压缩成三条红线加两条建议。红线:只能是一个词(不能有空格)、只能包含字母数字下划线、不能以数字开头。建议:名字要能描述数据内容、别用 Python 关键字。关键字列表 PDF 里给了一份,不用背,写代码时编辑器会高亮提醒。真正容易翻车的是用list、dict、str这类内置函数名当变量名,当时不报错,后面调用同名函数时直接报TypeError,排查起来很费时间。
提示:变量命名用下划线分隔单词(如
user_name),不要用驼峰,这是 Python 社区的通行习惯,读别人的代码时也更容易对齐。
3. 条件判断:if/elif/else 的层级关系与嵌套陷阱
3.1 单向、双向、多向判断的写法差异
条件判断的核心是让计算机在特定条件下执行特定语句。PDF 从单向if讲到多向if...elif...else,中间穿插了一个关键对比:if...else和if...if的区别。
单向判断最简单,条件成立就执行,不成立就跳过:
number = 6 if number > 3: print(number) # 输出 6双向判断if...else,两个分支互斥,走了一个就不会走另一个:
number = 7 if number < 3: print(number) else: number = number - 3 print(number) # 输出 4多向判断if...elif...else,用于三个及以上条件。PDF 里的成绩分级例子很典型:
grade = 65 if 80 <= grade <= 100: print('成绩优秀') elif 60 <= grade < 80: print('成绩中等') else: print('成绩差') # 输出:成绩中等这里有个格式硬要求:if、elif、else后面必须加冒号,执行语句必须缩进四个空格。PDF 里专门提了「空格和 tab 我选空格」,这是对的——混用空格和 tab 在 Python 3 里直接报TabError,而且肉眼看不出来。
3.2 if 嵌套的缩进层级与执行顺序
嵌套判断是在条件成立的执行语句里再放一层if。PDF 的例子是成绩低于 60 分后继续细分:
grade = 15 if 80 <= grade <= 100: print('成绩优秀') elif 60 <= grade < 80: print('成绩中等') else: print('成绩差') if 20 <= grade < 60: print('再努力一把,还有救!') else: print('你要比以前更努力才行,你可以的!') # 输出: # 成绩差 # 你要比以前更努力才行,你可以的!关键在缩进:第二个if缩进了四个空格,表示它属于else分支内部,和第一个if不是平级关系。如果缩进错了,逻辑完全变样。我见过有人把嵌套的if写到和外层if同一层级,结果无论外层条件是否成立,内层判断都会执行,这种 bug 不报错,但结果就是不对。
注意:写嵌套判断时,先把外层逻辑跑通,再往里加内层。一次性写完三层嵌套,缩进错一个地方,排查时间够你重写三遍。
4. 数据类型与操作:字符串、列表、字典的取改增删
4.1 字符串拼接、四则运算与类型转换
PDF 把数据类型分成基本类型(字符串、整数、浮点数)和复合类型(列表、元组、字典、布尔值)。字符串拼接有两种方式:+和%。
+只能拼接字符串,遇到整数必须先转换:
begin = '我吃了' number = 1 fruit = '个水果' # print(begin + number + fruit) # 报错:TypeError print(begin + str(number) + fruit) # 输出:我吃了1个水果%是格式化拼接,%d占位整数,%s占位字符串:
name = '《凤求凰》' number = 1 print('司马相如以%d曲%s打动了卓文君' % (number, name)) # 输出:司马相如以1曲《凤求凰》打动了卓文君四则运算里,%取余、**幂、//取整除这三个容易混。5 % 2得 1,2 ** 3得 8,11 // 2得 5。优先级和数学一致,括号最优先。
类型转换函数type()、str()、int()、float()、list()、len()是排查问题的常用工具。int()对浮点数直接抹零取整,int(3.8)得 3,不是四舍五入。list()把字符串拆成单个字符的列表,len()返回元素个数。
4.2 列表的偏移量、切片与 append 的三个易错点
列表操作分元素层面和列表层面,各有取改增删四种。偏移量从 0 开始,切片[a:b]取 a 到 b 但不含 b。
lst = ['松', '竹', '梅'] print(lst[0]) # 松 print(lst[1:2]) # ['竹'] print(lst[:2]) # ['松', '竹']append()是往列表末尾加元素的方法,PDF 列了三个易错点,我按踩坑频率重排:
第一,append不能对列表赋值。lst = lst.append('梅')会让lst变成None,因为append返回None,不返回新列表。
第二,append后面是小括号,不是中括号。写成lst.append['梅']直接报TypeError。
第三,append一次只能加一个元素。lst.append('梅', '岁寒三友')报参数数量错误,要加多个元素得用+合并列表或extend()。
lst = ['松', '竹'] lst.append('梅') # 正确:['松', '竹', '梅'] # lst = lst.append('梅') # 错误:lst 变成 None # lst.append['梅'] # 错误:TypeError # lst.append('梅', '菊') # 错误:参数数量不对del删除元素时,每次只能删一个,删多个要重新计算偏移量。del lst[0]删掉第一个后,原来的第二个变成新的第一个,再删还是del lst[0]。
4.3 字典的键值对操作与 keys/values/items 提取
字典用键来提取值,不用偏移量。PDF 里的例子是group['师父']取到'唐三藏'。修改和增加都是赋值语句,键存在就改,不存在就加。删除用del group['师父']。
keys()、values()、items()分别提取所有键、所有值、所有键值对。返回的是特殊视图对象,要转成列表得用list()包一层:
group = {'师父': '唐三藏', '大师兄': '行者'} print(list(group.keys())) # ['师父', '大师兄'] print(list(group.values())) # ['唐三藏', '行者'] print(list(group.items())) # [('师父', '唐三藏'), ('大师兄', '行者')]items()返回的每个元素是元组,遍历时可以直接拆包:for key, value in group.items():。这个写法在后续处理配置文件、API 返回数据时用得非常多。
5. 循环与布尔值:for 遍历和条件表达式的组合用法
5.1 for...in 遍历字符串、列表、字典
for循环的基本格式是for 变量 in 可迭代对象:。PDF 演示了遍历字符串、列表、字典三种场景。
遍历字符串时,每个字符依次赋值给循环变量:
for i in 'coding': print(i) # 输出 c o d i n g(每个字符一行)遍历列表时,每个元素依次赋值:
for i in ['for', 'change']: print(i) # 输出 for change(每个元素一行)遍历字典时,默认遍历的是键。要同时拿键和值,用items():
group = {'师父': '唐三藏', '大师兄': '行者'} for key in group: print(key) # 只输出键 for key, value in group.items(): print(key, value) # 同时输出键和值循环里常配合条件判断做筛选,比如遍历列表找出满足条件的元素。这种组合是后面写数据处理脚本的基础模式。
5.2 布尔值表达式与逻辑运算符
布尔值只有True和False。PDF 列了值为假的情况:False、0、空字符串''、空列表[]、空字典{}、None。其他值在条件判断里都视为真。
比较运算符==、!=、>、<、>=、<=产生布尔值。注意==是判断相等,=是赋值,写混了不报错但逻辑全错。成员运算符in和not in判断值是否在序列里。逻辑运算符and、or、not连接布尔值。
print(1 == 1) # True print('a' in 'abc') # True print(True and False) # False print(not True) # False实际写条件时,and和or的短路特性值得留意:and左边为假就不算右边,or左边为真就不算右边。利用这个特性可以避免一些不必要的计算,但也容易在右边放了有副作用的表达式时翻车。
6. 避坑与排查:五个我踩过的真实翻车点
6.1 缩进混用导致 TabError
现象:代码看着对齐,运行报TabError: inconsistent use of tabs and spaces in indentation。
原因:编辑器里一部分行用 tab 缩进,另一部分用空格,肉眼看不出来。
解决:统一用四个空格。在编辑器设置里把 tab 键映射为插入四个空格,一劳永逸。
6.2 append 返回值赋给原列表
现象:执行lst = lst.append('x')后,lst变成None,后续操作全部报AttributeError。
原因:append()是原地修改列表,返回None,不返回新列表。
解决:直接写lst.append('x'),不要赋值。需要返回新列表的场景用lst + ['x']。
6.3 input 返回值直接参与数值运算
现象:age = input('年龄:')后执行age + 1报TypeError。
原因:input()永远返回字符串,字符串不能和整数相加。
解决:用int(input('年龄:'))或先赋值再int()转换。转换前最好加个try...except处理非数字输入。
6.4 嵌套 if 的缩进层级写错
现象:外层条件不成立时,内层判断仍然执行了。
原因:内层if的缩进和外层if平级,导致它不属于外层分支。
解决:写嵌套时逐层确认缩进。外层if下的所有语句(包括内层if)必须比外层多四个空格。
6.5 用内置函数名当变量名
现象:定义了list = ['a', 'b']后,再调用list('abc')报TypeError: 'list' object is not callable。
原因:变量名覆盖了内置函数list。
解决:变量名避开list、dict、str、int、sum、max等内置函数名。已经覆盖了的话,del list删掉变量恢复内置函数。
提示:排查这类问题时,在报错行之前加
print(type(变量名)),先确认变量当前是什么类型,比盯着代码猜快得多。
7. 把 PDF 当练习册用:一个可复现的语法自测脚本
PDF 适合通读,但光读不练,过一周就忘。我的习惯是每学完一个语法块,写一个十行以内的小脚本,把当天学的点串起来。下面这个脚本覆盖了输入输出、类型转换、条件判断、列表操作和循环,可以直接复制运行,也可以按自己的需求改参数。
# 语法自测脚本:成绩录入与分级 scores = [] # 空列表,用于存放录入的成绩 # 循环录入三个成绩 for i in range(3): # input 返回字符串,用 float 转换支持小数 score = float(input('请输入第%d个成绩:' % (i + 1))) scores.append(score) # append 原地添加,不赋值 # 计算平均分 avg = sum(scores) / len(scores) print('平均分:%.2f' % avg) # 条件判断分级 if avg >= 90: print('等级:优秀') elif avg >= 60: print('等级:及格') else: print('等级:不及格') # 遍历列表,打印每个成绩 for idx, s in enumerate(scores): print('第%d个成绩:%.1f' % (idx + 1, s))这段代码里,range(3)产生 0、1、2 三个数,enumerate()在遍历时同时拿到索引和元素。%.2f保留两位小数,%.1f保留一位。运行一遍,把range(3)改成range(5),把float改成int,把elif的条件改一改,观察输出变化——这比反复读 PDF 有效得多。
从那以后我每次拿到一份语法资料,都强制自己先写一个能跑的小脚本再往下读,跑不通就回头查对应章节。这个习惯帮我省掉了大量「以为自己会了」的幻觉时间。希望帮到你。
本文还有配套的精品资源,点击获取