Python 100例(保姆级教程)

Python 100例:从零开始掌握编程核心能力

你有没有试过在某个深夜,打开 Python,想写点小脚本却无从下手?或者刚学完语法,却发现“知道”和“会用”之间隔着一条银河?别担心,这很正常。编程就像学骑自行车——理论再清楚,不踩踏板也飞不起来。

今天,我想带你走一条“实战为王”的路。不是背一堆概念,而是通过 100 个真实、典型、可运行的小例子,一步步把 Python 的基础能力扎扎实实练出来。这些例子覆盖变量、循环、函数、文件操作、异常处理、数据结构、模块化编程等核心模块,每一个都是你日后写项目时的“积木”。

别被“100例”吓到。这不意味着要一口气学完。你可以每天做 3 个,坚持一个月,你就会发现自己已经从“看着代码发呆”变成了“能写出有用程序”的人。

下面这些例子,我选的都是最常遇到的场景。比如:怎么判断一个数字是奇数还是偶数?怎么读取一个文本文件并统计行数?怎么把两个列表合并成一个字典?这些问题看似简单,但背后涉及的逻辑和语法正是你编程能力的根基。

别急着跳过,每一个例子都配有详细注释,甚至有些地方我还加了“为什么这么写”的解释。记住,理解比背诵重要得多。

变量与数据类型:程序的“数据仓库”

在编程世界里,变量就像是你家的抽屉。每个抽屉贴上标签(变量名),里面放着不同的东西(数据)。Python 的变量不需要提前声明类型,它会自动识别——这叫“动态类型”。

age = 28

height = 1.75

name = "小明"

is_student = True

print(f"姓名:{name}, 年龄:{age}, 身高:{height} 米, 是否学生:{is_student}")
print(f"变量 age 的类型是:{type(age)}")

注释说明

  • f"..." 是 f-string 格式化字符串,方便插入变量。
  • type() 函数用于查看变量的数据类型。
  • 字符串用引号包裹,可以是单引号或双引号。
  • 布尔值只有 TrueFalse 两种,注意首字母大写。

再看一个更实用的例子:交换两个变量的值。

a = 10
b = 20

temp = a
a = b
b = temp

print(f"交换后:a = {a}, b = {b}")

a, b = b, a
print(f"再次交换:a = {a}, b = {b}")

注释说明

  • 解包赋值 a, b = b, a 是 Python 的一个优雅特性。
  • 它背后的原理是:右边的值先打包成一个元组 (b, a),再解包赋给左边的变量。
  • 这种写法不仅简洁,还避免了临时变量的使用。

条件判断与循环:程序的“决策大脑”

条件判断和循环是程序的“逻辑中枢”。没有它们,程序只能按顺序执行,像一台不会转弯的机器人。

先看一个经典的“判断奇偶数”例子:

number = int(input("请输入一个整数:"))

if number % 2 == 0:
    print(f"{number} 是偶数")
else:
    print(f"{number} 是奇数")

注释说明

  • input() 读取用户输入,返回的是字符串。
  • int() 将字符串转换为整数,否则不能做数学运算。
  • % 是取模运算符,5 % 2 = 1,表示 5 除以 2 的余数。
  • == 是判断相等,注意不要写成 =(赋值)。

循环部分,我们用一个“猜数字”游戏来演示:

import random

secret_number = random.randint(1, 100)
guess = None
attempts = 0

while guess != secret_number:
    guess = int(input("猜一个 1 到 100 之间的数字:"))
    attempts += 1  # 每猜一次,尝试次数加 1

    if guess < secret_number:
        print("太小了!")
    elif guess > secret_number:
        print("太大了!")
    else:
        print(f"恭喜你!猜对了!总共用了 {attempts} 次。")

注释说明

  • random.randint(1, 100) 生成一个 1 到 100 的随机整数。
  • while guess != secret_number:只要猜的数不等于目标数,就继续循环。
  • += 是自增运算符,attempts += 1 等价于 attempts = attempts + 1
  • elif 是“else if”的缩写,用于多条件判断。

函数定义与调用:代码的“可复用模块”

函数就像是你家的厨房电器。你不需要知道微波炉怎么加热食物,只要知道“放进去、按开始”就行。函数封装了复杂逻辑,让你只关心输入和输出。

def add_numbers(a, b):
    """
    计算两个数的和
    参数:
        a: 第一个数(整数或浮点数)
        b: 第二个数(整数或浮点数)
    返回值:
        两数之和
    """
    result = a + b
    return result

sum_result = add_numbers(5, 3)
print(f"5 和 3 的和是:{sum_result}")

注释说明

  • def 关键字定义函数。
  • add_numbers(a, b) 中的 ab 是形参(形式参数)。
  • return 返回结果,函数执行后可以被赋值给变量。
  • 函数体用缩进表示,Python 用缩进定义代码块,不是大括号。

再看一个更复杂的例子:统计一段文字中每个字母出现的次数。

def count_letters(text):
    # 创建一个空字典来存储字母和计数
    letter_count = {}

    # 遍历文本中的每一个字符
    for char in text.lower():  # 转为小写,避免大小写影响
        # 只统计字母,忽略空格和标点
        if char.isalpha():
            if char in letter_count:
                letter_count[char] += 1  # 已存在则加 1
            else:
                letter_count[char] = 1   # 不存在则初始化为 1

    return letter_count

text = "Hello, Python is great!"
result = count_letters(text)

for letter, count in result.items():
    print(f"字母 '{letter}' 出现了 {count} 次")

注释说明

  • text.lower() 将字符串转为小写,统一处理。
  • char.isalpha() 判断字符是否为字母。
  • letter_count[char] 是字典的键值访问。
  • result.items() 返回键值对,用于遍历。

数据结构:程序的“组织工具”

Python 提供了四种主要的数据结构:列表、元组、字典、集合。它们各有特点,就像不同的收纳盒。

创建数组与初始化

fruits = ["苹果", "香蕉", "橙子"]

coordinates = (10, 20)

student = {"name": "小红", "age": 20, "grade": 88}

unique_numbers = {1, 2, 3, 4, 4}  # 4 只出现一次

print(f"列表:{fruits}")
print(f"元组:{coordinates}")
print(f"字典:{student}")
print(f"集合:{unique_numbers}")

注释说明

  • 列表用方括号 [],元组用圆括号 ()
  • 字典用大括号 {},键和值用冒号 : 分隔。
  • 集合用大括号,但没有键值对。
  • 列表和字典是可变的,元组和集合是不可变的(集合可变,但元素不可变)。

列表操作与遍历

numbers = [1, 2, 3, 4, 5]

numbers.append(6)  # 在末尾添加
print(f"添加后:{numbers}")

numbers.insert(2, 100)  # 在索引 2 处插入 100
print(f"插入后:{numbers}")

for num in numbers:
    print(f"当前数字:{num}")

注释说明

  • append() 在末尾添加元素。
  • insert(index, value) 在指定位置插入。
  • for num in numbers 是 for 循环遍历列表。

文件读写与异常处理:程序的“安全防护”

程序运行时,最怕“突然崩掉”。文件读写失败、用户输入非法、网络连接中断……这些都可能引发异常。学会处理异常,是程序员成熟的标志。

try:
    with open("example.txt", "r", encoding="utf-8") as file:
        lines = file.readlines()
        print(f"文件共有 {len(lines)} 行")
except FileNotFoundError:
    print("错误:文件未找到,请检查文件名是否正确。")
except PermissionError:
    print("错误:没有权限读取该文件。")
except Exception as e:
    print(f"发生未知错误:{e}")

注释说明

  • with open(...) 是上下文管理器,自动关闭文件。
  • encoding="utf-8" 指定编码格式,避免中文乱码。
  • try-except 用于捕获异常,防止程序崩溃。
  • Exception as e 捕获所有异常并打印具体信息。

再看一个写文件的例子:

data = ["第一行", "第二行", "第三行"]

try:
    with open("output.txt", "w", encoding="utf-8") as file:
        for line in data:
            file.write(line + "\n")  # 每行末尾加换行符
    print("文件写入成功!")
except Exception as e:
    print(f"写入失败:{e}")

注释说明

  • "w" 模式会覆盖原有内容,"a" 模式是追加。
  • "\n" 是换行符,确保每行独立。
  • 异常处理同样重要,写文件也可能失败。

实战综合案例:学以致用的“小项目”

最后,我们来做一个综合练习:一个简单的学生成绩管理系统。

students = {}

def add_student(name, score):
    """添加学生和成绩"""
    if name in students:
        print(f"学生 {name} 已存在。")
    else:
        students[name] = score
        print(f"学生 {name} 添加成功,成绩:{score}")

def show_all():
    """显示所有学生"""
    if not students:
        print("暂无学生数据。")
    else:
        print("所有学生及成绩:")
        for name, score in students.items():
            print(f"{name}:{score}")

def find_student(name):
    """查找学生"""
    if name in students:
        print(f"{name} 的成绩是:{students[name]}")
    else:
        print(f"未找到学生 {name}。")

add_student("小明", 85)
add_student("小红", 92)
add_student("小刚", 78)
show_all()
find_student("小红")

注释说明

  • 使用字典存储学生信息,名字为键,成绩为值。
  • 函数封装了不同功能,便于复用。
  • 通过调用函数完成业务逻辑,体现模块化思想。

这只是一个开始。如果你坚持完成“Python 100例”中的每一个小练习,你将建立起扎实的编程基础。这些例子不是为了让你“背下来”,而是为了让你在动手的过程中,真正理解 Python 的思维方式。

编程不是一蹴而就的事,但每一步都算数。从今天开始,写一行代码,就离目标近一点。