logo

Python零基础入门:核心语法与数据结构详解

作者:半吊子全栈工匠2026.11.07 01:43浏览量:1

简介:本文面向Python零基础学习者,系统梳理入门阶段必须掌握的核心知识点:输出格式化、运算符、条件与循环控制,以及列表、元组、字典、集合四大容器的增删改查操作。文中配有可直接运行的示例代码与易错点提示,帮助读者快速建立完整的语法框架,为后续进阶学习打下坚实基础。

一、开篇:为什么这些基础值得反复打磨

对初学者而言,Python的入门阶段大致由三块拼图构成:输出与格式化、运算符与流程控制、四大容器(列表、元组、字典、集合)的增删改查。很多学习者感到“学不扎实”,往往不是因为知识太深,而是这些基础点零散地分布在教材各处,缺少一次系统性串联。本文按照“输出 → 运算 → 流程 → 容器”的学习主线,把高频考点和易错点整合成一份完整的入门指南,每一步都配有可直接运行的示例代码。

二、输出与格式化:让程序“开口说话”

1. print的end参数:控制换行行为

print在默认情况下会在输出结束后自动换行,这由参数end的默认值(换行符)决定。把end改成其他内容,就能在输出末尾追加自定义间隔符,并让下一个print继续输出在同一行:

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

这个技巧在打印进度、拼接一行多个结果时非常实用。

2. 占位符:%s与格式化输出

%是传统的格式化方式,其中%s是字符串占位符,会被后面的变量依次替换:

  1. name = "小明"
  2. age = 18
  3. print("姓名:%s,年龄:%d" % (name, age))
  4. # 输出:姓名:小明,年龄:18

%s除了接收字符串,也能把数字自动转为字符串输出;占位整数时使用%d更规范。

三、运算符:程序计算的基石

1. 复合赋值运算符

+=、-=等复合赋值运算符把“计算+赋值”合并成一步,a += 1 等价于 a = a + 1,同理还有*=、/=等。循环计数、累加求和几乎都依赖它们:

  1. total = 0
  2. total += 10 # 等价于 total = total + 10

2. 比较运算符

判断运算符包括 ==(等于)、!=(不等于)、>、<、>=、<=,运算结果是布尔值True或False。特别注意:=是赋值,==才是判断,这是初学者最高频的笔误之一。

3. 逻辑运算符

and表示“两边都要满足”,or表示“只要一方满足”,not表示取相反结果:

  1. age = 20
  2. print(age > 18 and age < 60) # True,两个条件都成立
  3. print(age < 18 or age > 60) # False,两个条件都不成立
  4. print(not age > 18) # False,结果取反

四、流程控制:赋予程序判断与重复的能力

1. if条件判断

if后面写条件,条件末尾必须加冒号,冒号下一行缩进的代码块才会被条件控制:

  1. score = 85
  2. if score >= 60:
  3. print("及格")
  4. else:
  5. print("不及格")

缩进是Python语法本身的一部分,同一代码块必须保持一致,通用规范推荐4个空格。

2. while循环

while在条件成立时反复执行代码块,适合“不知道循环多少次、只知道何时停止”的场景。使用时务必保证循环体内有让条件趋向结束的语句,否则会陷入死循环。

3. for循环与range

for i in ... 可以挨个取出可迭代对象中的值,i是临时变量,in后面跟循环对象,字符串、列表都可以被遍历:

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

range用来记录循环次数,相当于计数器,常与for搭配:

  1. for i in range(5):
  2. print(i) # 依次输出 0 1 2 3 4

4. break与continue

break用来彻底结束整个循环;continue用来结束本次循环、跳过剩余语句、继续下一次循环。在while循环中使用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,跳过3

五、列表:最常用的有序容器

1. 定义与基本特性

列表放在中括号里,元素之间用逗号隔开,允许存放不同类型的数据;列表支持切片操作,也可以直接用for循环遍历:

  1. li = [10, "python", 3.14]
  2. print(li[0]) # 10
  3. print(li[0:2]) # [10, 'python'],切片含头不含尾
  4. for item in li:
  5. print(item)

2. 增:append / extend / insert

  • append(元素):把传入内容作为一个整体追加到列表末尾;如果传入的是列表,整个列表会成为新元素;
  • extend(可迭代对象):把可迭代对象拆开逐个添加,例如extend([1, 2])会让列表多出两个元素;
  • insert(下标, 元素):在指定位置插入;若该位置已有元素,原有元素会整体后移。
  1. a = [1, 2]
  2. a.append([3, 4]) # [1, 2, [3, 4]]
  3. b = [1, 2]
  4. b.extend([3, 4]) # [1, 2, 3, 4]
  5. b.insert(1, 99) # [1, 99, 2, 3, 4]

3. 删:del / pop / remove

  • del:直接按下标删除,也可以删除切片甚至整个变量;
  • pop(下标):按下标删除并返回被删除的元素,不传下标时默认删除末尾元素;
  • remove(元素):按值删除,默认只删除最先出现的那一个指定元素;元素不存在会报错。

4. 改与查

修改直接通过下标赋值完成。查询方面:in判断元素是否存在于列表中,返回布尔值;index(元素)返回指定元素首次出现的下标,找不到会报错;count(元素)统计元素出现的次数。

  1. li = [1, 2, 2, 3]
  2. print(2 in li) # True
  3. print(li.index(2)) # 1
  4. print(li.count(2)) # 2
  5. li[0] = 100 # 修改下标0的元素

5. 排序:sort与reverse

sort()将列表按特定顺序原地排列,默认从小到大(传入reverse=True可改为降序);reverse()只负责把列表整体倒过来,不做大小比较。

6. 列表推导式

列表推导式用一行代码生成列表,基本格式为[表达式 for 变量 in 列表或range对象]:

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

7. 嵌套列表

列表里还可以嵌套列表,用两层下标取出内层元素:

  1. grid = [[1, 2], [3, 4]]
  2. print(grid[1][0]) # 3

六、元组:不可变的有序序列

元组与列表结构相似,但不能进行增、删、改操作,一旦创建就固定不变,适合保存不希望被误改的数据。元组仍支持遍历、切片和查询。一个细节:只含一个元素的元组要写成(1,),逗号不能省略。

七、字典:按键取值的键值对映射

字典以“键值对”组织数据,通过键而不是下标访问元素。

1. 用get安全查找

用中括号访问不存在的键会直接报错,而get更安全:键存在返回对应值,不存在时默认返回None,也可以自己设置默认返回值:

  1. info = {"name": "小明", "age": 18}
  2. print(info.get("city")) # None
  3. print(info.get("city", "未知")) # 未知

2. 新增与修改一体的写法

对字典执行 d[键] = 值 时,如果键已存在则修改,不存在则新增,同一种写法覆盖两种场景:

  1. info["age"] = 19 # 键已存在,执行修改
  2. info["city"] = "北京" # 键不存在,执行新增

八、集合:自动去重的无序容器

集合中的元素不重复、无下标,常用于去重和快速成员判断。

1. 添加:add与update

add一次只能添加一个整体元素,传入列表等可迭代对象会报错;update接收可迭代对象,把其中的元素一个一个放进集合:

  1. s = {1, 2}
  2. s.add(3) # {1, 2, 3}
  3. s.update([4, 5]) # {1, 2, 3, 4, 5}

2. 删除:remove / pop / discard

  • remove(元素):删除指定元素,元素不存在会报错;
  • pop():不需要传参,会移除并返回集合中的某个元素(对数值集合通常表现为移除最小的元素,但顺序并无保证);
  • discard(元素):同样按元素删除,区别是元素不存在时不会报错。
  1. s = {1, 2, 3}
  2. s.remove(2) # {1, 3}
  3. s.discard(100) # 不报错
  4. s.pop() # 移除并返回一个元素

九、四大容器对比与学习建议

1. 一张表看清选型

容器 定义符号 有序性 可变性 典型用途
列表 [ ] 有序,可切片 可变 顺序存储、动态增删改
元组 ( ) 有序 不可变 固定不变的数据
字典 {键: 值} 以键定位 可变 键值映射、快速查找
集合 { } 无序 可变 去重、成员判断

2. 学习建议

  • 边学边敲:每个语法点都在编辑器里亲手运行一遍,观察输出与报错;
  • 善用报错信息:index找不到元素、remove删不存在元素这类报错,正是理解函数行为的最好材料;
  • 小项目串联:例如用列表+字典+循环写一个“学生成绩管理”小工具,把增删改查全部用上;
  • 循序渐进扩展场景:掌握基础后,可以尝试用循环处理批量数据,或借助云平台提供的对象存储、日志服务等通用能力,把练习从本地脚本推向真实的数据处理场景。

基础语法的价值不在“背下来”,而在“形成肌肉记忆”。把本文的每个示例亲手运行、修改、再运行,入门阶段的核心拼图就真正拼完整了。

发表评论

活动