Python基础入门全攻略:语法规则与数据结构实战

一、Python核心语法规则:从变量到函数的基础逻辑

1. 变量与数据类型:代码的“基本积木”

变量是Python中存储数据的容器,命名要遵守3条规则:① 以字母或下划线开头;② 只能包含字母、数字和下划线;③ 区分大小写(Namename是两个不同变量)。
Python的基础数据类型有4种,直接看代码例子更直观:

Python基础入门全攻略:语法规则与数据结构实战

# 定义不同类型的变量
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. 条件语句:让代码“做选择”

条件语句用ifelifelse组合,根据条件执行不同代码块。重点: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

四、新手常踩的“坑”与解决方法

  1. 缩进错误:Python用缩进区分代码块,比如if后面的代码必须缩进,否则报错。解决:统一用4个空格或1个Tab,不要混合使用。
  2. 变量未定义:使用变量前必须先赋值,否则报错NameError。解决:先定义变量再使用(如name = "小明"后再用print(name))。
  3. 字典key不存在:直接用student["gender"]访问不存在的key会报错,解决:用get()方法(student.get("gender"))。
  4. 元组修改错误:元组不可变,试图修改元素会报错,解决:如果需要修改,改用列表(如point = [100,200])。
  5. 循环死循环while循环的条件永远为True(如while 1:),导致无限重复。解决:确保循环变量有自增(如i += 1)或条件会变为False

原创文章,作者:,如若转载,请注明出处:https://zube.cn/archives/168

(0)