一、Python核心语法规则:从变量到函数的基础逻辑
1. 变量与数据类型:代码的“基本积木”
变量是Python中存储数据的容器,命名要遵守3条规则:① 以字母或下划线开头;② 只能包含字母、数字和下划线;③ 区分大小写(Name
和name
是两个不同变量)。
Python的基础数据类型有4种,直接看代码例子更直观:

# 定义不同类型的变量
username = "Lily" # 字符串(str):用单/双引号包裹
age = 22 # 整数(int):不带小数的数字
weight = 52.5 # 浮点数(float):带小数点的数字
is_employee = False # 布尔值(bool):只有True/False两个值
# 查看变量类型(用type()函数)
print(type(username)) # 输出<class 'str'>
print(type(age)) # 输出<class 'int'>
如果需要转换数据类型,用int()
、str()
、float()
等函数:
# 字符串转整数
print(int("123")) # 输出123
# 整数转浮点数
print(float(7)) # 输出7.0
# 布尔值转字符串
print(str(True)) # 输出"True"
2. 条件语句:让代码“做选择”
条件语句用if
、elif
、else
组合,根据条件执行不同代码块。重点:Python用缩进(4个空格或1个Tab)区分代码块,缩进错误会直接报错!
例子:根据分数判断等级
score = 88
if score >= 90:
print("等级:优秀")
elif score >= 80: # 多个条件用elif(else if的简写)
print("等级:良好")
elif score >= 60:
print("等级:及格")
else: # 所有条件不满足时执行
print("等级:不及格")
3. 循环结构:让代码“重复做”
循环分两种:for
循环(遍历序列)和while
循环(满足条件时重复)。
-
for循环:常用遍历列表、字符串等序列
用range()
生成连续整数(range(开始, 结束, 步长)
,结束值不包含):# 遍历列表中的水果 fruits = ["苹果", "香蕉", "橙子"] for fruit in fruits: print(f"我喜欢吃{fruit}") # 输出3行结果 # 生成1-4的整数(range(1,5)等价于[1,2,3,4]) for i in range(1, 5): print(i) # 输出1→2→3→4
-
while循环:只要条件为
True
就重复执行
注意:必须让循环变量“自增”,否则会陷入死循环!# 计算1到10的和 total = 0 i = 1 while i <= 10: total += i # 等价于total = total + i i += 1 # 循环变量自增,避免死循环 print(f"1到10的和是:{total}") # 输出55
循环中可以用break
(退出整个循环)或continue
(跳过当前循环):
# 用break找到第一个偶数就停止
for num in [1,3,5,2,7]:
if num % 2 == 0:
print(f"找到偶数:{num}")
break # 退出循环,后面的7不会被遍历
# 用continue跳过奇数,只打印偶数
for num in [1,2,3,4,5]:
if num % 2 != 0:
continue # 跳过当前奇数
print(num) # 输出2→4
4. 函数基础:把代码“打包复用”
函数是封装好的可复用代码块,用def
定义,格式:
def 函数名(参数):
函数体(要执行的代码)
return 返回值(可选)
例子:计算矩形面积的函数
def calculate_area(length, width):
area = length * width
return area # 返回计算结果(没有return则返回None)
# 调用函数(传入参数,获取返回值)
room_area = calculate_area(5, 4)
print(f"房间面积是:{room_area}平方米") # 输出20
函数参数可以是位置参数(按顺序传入)或关键字参数(指定参数名,顺序无关):
def greet(name, message):
print(f"你好{name},{message}")
# 位置参数(按顺序传name→message)
greet("小明", "今天天气不错!")
# 关键字参数(不按顺序,更清晰)
greet(message="一起吃午饭吧~", name="小红")
二、Python常用数据结构:实战中的“工具包”
数据结构是存储和组织数据的方式,Python内置了4种常用结构,先看一张对比表快速区分:
数据结构 | 特点 | 可变? | 有序? | 适用场景 |
---|---|---|---|---|
列表(list) | 可重复元素 | ✅ | ✅ | 存储顺序数据(如成绩列表) |
字典(dict) | 键值对(key:value) | ✅ | ❌ | 存储关联数据(如学生信息) |
元组(tuple) | 不可修改 | ❌ | ✅ | 存储固定数据(如坐标点) |
集合(set) | 无重复元素 | ✅ | ❌ | 去重或判断成员关系 |
1. 列表(list):最常用的“有序容器”
列表用[]
创建,元素可以是任意类型,支持添加、删除、排序等操作。
-
基本操作
# 创建列表 scores = [90, 85, 78, 92] # 整数列表 mix_list = [1, "Python", True] # 混合类型列表 # 访问元素(索引从0开始,-1表示最后一个元素) print(scores[0]) # 第一个元素:90 print(scores[-1]) # 最后一个元素:92 # 切片(获取子列表:start:end,不包含end) print(scores[1:3]) # 第2到第3个元素:[85,78] print(scores[:2]) # 前2个元素:[90,85] print(scores[2:]) # 从第3个开始到末尾:[78,92]
-
常用方法
# 添加元素(append()末尾加,insert()指定位置加) scores.append(88) # 末尾加88 → [90,85,78,92,88] scores.insert(1, 95) # 在索引1位置加95 → [90,95,85,78,92,88] # 删除元素(remove()删值,pop()删索引) scores.remove(78) # 删除值78 → [90,95,85,92,88] scores.pop(2) # 删除索引2的元素(85)→ [90,95,92,88] # 排序(sort()升序,reverse()反转) scores.sort() # 升序排序 → [88,90,92,95] scores.reverse() # 反转列表 → [95,92,90,88]
2. 字典(dict):“键值对”的关联容器
字典用{key: value}
创建,key必须是不可变类型(如字符串、整数),value可以是任意类型。
-
基本操作
# 创建字典(学生信息) student = { "name": "张三", "age": 20, "major": "计算机科学" } # 访问value(用key或get()方法) print(student["name"]) # 直接用key:张三(key不存在会报错) print(student.get("age")) # get()方法:20(key不存在返回None,更安全) print(student.get("gender", "未知")) # key不存在时返回默认值:未知
-
修改与遍历
# 修改value(直接赋值) student["age"] = 21 # 把age从20改成21 # 添加新键值对 student["gender"] = "男" # 新增gender键 # 遍历字典(用items()获取键值对) for key, value in student.items(): print(f"{key}:{value}") # 输出:name:张三 → age:21 → major:计算机科学 → gender:男
3. 元组(tuple):“不可变”的有序容器
元组用()
或直接逗号分隔创建,一旦创建就不能修改(不可变),适合存储固定数据(如坐标点)。
# 创建元组
point = (100, 200) # 坐标点(x=100, y=200)
colors = "红", "绿", "蓝" # 省略括号也可以
# 访问元素(和列表一样用索引)
print(point[0]) # 100
print(colors[1]) # 绿
# 不可变!以下代码会报错(试图修改元组元素)
# point[0] = 150 # 报错TypeError: 'tuple' object does not support item assignment
4. 集合(set):“去重”与“成员判断”神器
集合用{}
或set()
创建,无重复元素,无序,适合去重或快速判断元素是否存在。
# 创建集合(自动去重)
nums = {1, 2, 3, 3, 4} # 去重后:{1,2,3,4}
letters = set("aabbcc") # 字符串转集合:{'a','b','c'}
# 基本操作
nums.add(5) # 添加元素:{1,2,3,4,5}
nums.remove(3) # 删除元素:{1,2,4,5}
# 集合运算(交集、并集、差集)
a = {1,2,3}
b = {2,3,4}
print(a & b) # 交集(都有的元素):{2,3}
print(a | b) # 并集(所有元素):{1,2,3,4}
print(a - b) # 差集(a有b没有的元素):{1}
三、语法与数据结构结合:小案例实战
用一个“学生成绩管理”的小例子,把语法和数据结构串起来:
需求:存储3个学生的成绩,计算平均分,找出数学最高分的学生。
# 用列表存储学生字典(每个字典是一个学生的信息)
students = [
{"name": "Alice", "math": 92, "english": 88},
{"name": "Bob", "math": 85, "english": 90},
{"name": "Charlie", "math": 95, "english": 82}
]
# 1. 计算每个学生的平均分(用for循环遍历列表)
for student in students:
average = (student["math"] + student["english"]) / 2
student["average"] = average # 给字典添加平均分字段
print(f"{student['name']}的平均分:{average:.1f}") # 保留1位小数
# 2. 找出数学最高分的学生(用变量记录最大值和对应学生)
max_math = 0
top_student = ""
for student in students:
if student["math"] > max_math:
max_math = student["math"]
top_student = student["name"]
print(f"数学最高分是{top_student},分数:{max_math}")
运行结果:
Alice的平均分:90.0
Bob的平均分:87.5
Charlie的平均分:88.5
数学最高分是Charlie,分数:95
四、新手常踩的“坑”与解决方法
- 缩进错误:Python用缩进区分代码块,比如
if
后面的代码必须缩进,否则报错。解决:统一用4个空格或1个Tab,不要混合使用。 - 变量未定义:使用变量前必须先赋值,否则报错
NameError
。解决:先定义变量再使用(如name = "小明"
后再用print(name)
)。 - 字典key不存在:直接用
student["gender"]
访问不存在的key会报错,解决:用get()
方法(student.get("gender")
)。 - 元组修改错误:元组不可变,试图修改元素会报错,解决:如果需要修改,改用列表(如
point = [100,200]
)。 - 循环死循环:
while
循环的条件永远为True
(如while 1:
),导致无限重复。解决:确保循环变量有自增(如i += 1
)或条件会变为False
。
原创文章,作者:,如若转载,请注明出处:https://zube.cn/archives/168