logo

Python零基础入门:语法与数据结构精讲

作者:demo2026.11.07 01:54浏览量:0

简介:本文面向零基础学习者,系统梳理Python入门必备知识:从格式化输出、输入类型转换、运算符,到分支与循环控制,再到列表、元组、字典、集合四大数据结构的增删改查与典型用法,辅以代码示例与易错点解析,帮助读者快速搭建完整知识框架、避开常见陷阱。

一、把碎片知识串成体系:学习主线

Python以语法简洁、接近自然语言著称,是编程入门的主流选择之一。但零基础学习者常见的困境是:零散地记住了一些函数和语法,却难以在解决实际问题时将它们组织起来。更高效的学习方式是沿着一条主线推进——数据如何输出与输入、如何参与运算、程序如何根据条件与循环改变执行流程、数据如何被组织成不同结构存储与管理。本文按照这条主线,对入门阶段的核心知识点做一次系统梳理。

二、输出与格式化:print 的基础与进阶

print 是绝大多数人接触的第一个函数。它默认在输出内容后换行;如果希望多次输出出现在同一行,可以通过 end 参数指定结尾的间隔内容,让下一个 print 的结果接到同一行:

  1. print("Hello", end=" ")
  2. print("World") # 输出:Hello World

格式化字符串有三种常见方式:

  1. 占位符方式:%s 是字符串占位符,%f 是浮点数占位符。
  1. name = "Tom"
  2. print("姓名:%s" % name)
  1. 指定精度:%.4f 表示保留四位小数。
  1. print("圆周率约为 %.4f" % 3.1415926) # 圆周率约为 3.1416
  1. f-string:在字符串前加 f,把变量名或表达式写进大括号,由解释器自动填入结果。
  1. score = 92.5
  2. print(f"姓名:{name},分数:{score}")

三种方式中,f-string 可读性最高、写法最简洁,是当前的主流推荐写法。

三、输入:input 的默认类型陷阱

input 用于在程序运行时收集用户输入,其返回值默认是字符串类型:

  1. age = input("请输入年龄:") # 即使输入 18,得到的也是字符串 "18"
  2. age = int(age) # 需要参与算术运算时,先转换类型

这是初学者的高频错误点:直接把 input 的结果拿去做加减法会触发类型错误。务必根据用途用 int() 或 float() 显式转换。

四、转义字符与原始字符串

字符串中以反斜杠开头的某些字符组合具有特殊含义,常见的包括:\n(换行)、\t(制表符)、\(反斜杠本身)、\’ 与 \”(引号字面量)。当字符串本身包含大量反斜杠(例如文件路径)时,逐个转义非常繁琐。解决办法是在字符串前面加 r,声明为原始字符串,其中的转义序列不再生效:

  1. path = r"C:\new\test" # \n 不会被解释为换行

五、运算符体系:算术、赋值、比较与逻辑

算术运算符中有三个需要重点区分:

  • a // b:整除并向下取整,例如 7 // 2 得 3;若参与运算的是浮点数,结果也会以浮点数形式呈现,如 7.0 // 2 得 3.0。
  • a % b:取 a 除以 b 的余数。
  • a ** b:计算 a 的 b 次方。

赋值运算符:+=、-= 等复合赋值用于简化变量更新,如 a += 1 等价于 a = a + 1,在循环计数中尤其常用。

比较运算符:==(等于)、!=(不等于)、>、<、>=、<=,运算结果是布尔值 True 或 False。要特别注意 == 与 = 的区别:前者是判断相等,后者是赋值,混用会导致难以察觉的逻辑错误。

逻辑运算符:and 表示两边条件都要满足;or 只要一方满足即可;not 返回相反的结果。它们通常与比较运算符组合,构造复合条件:

  1. if score >= 60 and score < 90:
  2. print("及格")

六、流程控制:条件、循环与跳出

条件语句:if 后面要加冒号,代码块通过缩进表达从属关系,这是 Python 区别于许多语言的重要特点:

  1. if score >= 90:
  2. print("优秀")
  3. elif score >= 60:
  4. print("及格")
  5. else:
  6. print("不及格")

while 循环:只要条件成立就持续执行,适合循环次数不固定、依赖运行状态的场景。

for 循环:for i in 可迭代对象 会挨个取出序列中的值,i 是临时变量,循环结束后即失效。遍历字符串时,每次取出一个字符:

  1. for ch in "abc":
  2. print(ch) # 依次输出 a、b、c

range 相当于计数器,用来控制循环次数。它遵循“左闭右开”规则:range(1, 5) 依次产生 1、2、3、4;range(1, 10, 2) 以步长 2 产生 1、3、5、7、9。

break 与 continue 负责精细控制循环:break 直接结束整个循环;continue 只结束本次循环、立刻进入下一次。使用 continue 有一个关键细节——修改循环变量的语句必须写在 continue 之前,否则循环条件永远无法变化,会造成死循环:

  1. i = 0
  2. while i < 5:
  3. i += 1 # 必须放在 continue 之前
  4. if i == 3:
  5. continue
  6. print(i) # 输出 1、2、4、5

七、列表:最常用的可变序列

列表放在中括号里,元素用逗号隔开,数据类型可以不同,例如 [1, “two”, 3.0]。列表支持切片操作(如 li[1:3] 取第二到第三个元素),也可以直接用 for 循环遍历。

添加元素的三种方法语义不同,是学习重点:

  • append:整体添加,把参数作为一个元素追加到末尾。执行 append([4, 5]) 时,[4, 5] 会作为一个整体被放入列表。
  • extend:分散添加,参数必须是可迭代对象,其元素会被逐个追加进列表。
  • insert:指定位置添加,需要提供下标;若该位置已有元素,原有元素会依次后移。

修改元素:直接通过下标赋值,如 li[0] = 100。

查找与统计:

  • in:判断指定元素是否存在于列表中,返回布尔值,通常作为访问前的安全检查。
  • index:返回指定元素的下标;元素不存在时会报错。
  • count:统计某元素在当前列表中出现的次数。

删除元素的三种方式:

  • del:直接删除,可作用于单个元素或整个列表。
  • pop:根据下标删除并返回被删元素,适合“删除后还要使用”的场景。
  • remove:按值删除,当列表中存在多个相同元素时,默认删除最先出现的那个。

排序与翻转:sort 将列表按特定顺序排列,默认从小到大;reverse 将列表整体倒过来。注意 reverse 只是反转原有顺序,并不等同于降序排序。

列表推导式:用一行完成“遍历、加工、收集”,标准格式为 [表达式 for 变量 in 列表或 range 等可迭代对象]:

  1. squares = [x * x for x in range(1, 6)] # [1, 4, 9, 16, 25]

嵌套:列表中的元素可以是另一个列表,通过多重下标取出内层元素,如 li[0][1] 表示第一个子列表的第二个元素。

八、元组:不可变的序列

元组与列表同属序列类型,但初始化后不能进行增、删、改操作。这种不可变性使元组适合存放不应被意外修改的数据,例如坐标、常量配置。它也因此没有 append、remove 等方法——如果发现需要修改,说明数据更适合用列表承载。

九、字典:以键值对组织数据

字典用于保存键值对,格式为 {键1: 值1, 键2: 值2}。键具备唯一性,值可以重复;字典中没有下标的概念,查找必须通过键名:

  1. user = {"name": "Tom", "age": 18}
  2. print(user["name"]) # Tom

安全访问:直接用中括号访问不存在的键会报错;get 方法则在键不存在时返回 None,也支持自定义默认返回值:

  1. print(user.get("email")) # None
  2. print(user.get("email", "未填写")) # 未填写

新增与修改是同一套语法:d[key] = value,键存在就修改对应值,不存在就新增这对键值。

删除:del 删除指定键值对;clear 清空整个字典的全部元素,但不会删除字典本身,之后仍可继续使用;pop 删除指定键并返回对应值。len 返回字典中键值对的个数。

遍历:keys() 取出所有键,values() 取出所有值,items() 相当于把前两者结合、以(键, 值)对的形式返回:

  1. for k, v in user.items():
  2. print(k, "=", v)

十、集合:无序且元素唯一

集合写作 {1, 2, 3},有两个核心特性:元素唯一,重复加入的元素会被自动去重;无序,这一特性源于其底层基于哈希表的实现方式,因此集合不保序、不支持下标访问。另外注意:创建空集合要使用 set(),因为 {} 创建的是空字典。

添加:add 添加的是整体,一次只能添加一个元素;update 接收可迭代对象,把元素一个一个放进去。

删除:

  • remove:删除指定元素,元素不存在时会报错。
  • pop:调用时只需加括号、不传参数,删除一个元素(由于无序性,实际删除的通常是排序靠前的那个,但不应依赖这一行为)。
  • discard:与 remove 类似,但元素不存在时不会报错,适合不确定元素是否存在的场合。

十一、四大数据结构对比速查

结构 符号 有序 可变 典型场景
列表 [ ] 是 是 顺序收集、频繁增删改
元组 ( ) 是 否 固定不变的成组数据
字典 {键:值} 按键访问 是 以键快速查找映射关系
集合 {元素} 否 是 去重与成员判断

十二、学习建议与下一步

零基础阶段的关键不是背下多少方法名,而是建立“输入—运算—流程控制—数据组织”的完整心智模型。建议为每个数据结构整理一张小卡片,记录创建方式、增删改查方法和适用场景;每学完一章,通过小练习(如成绩统计、通讯录管理、列表去重器)把多个知识点串联起来,巩固理解。掌握本文内容后,下一步可以学习函数封装、异常处理与文件操作,再过渡到面向对象与模块化开发,逐步走向真实项目实战。

发表评论

活动