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()函数用于查看变量的数据类型。- 字符串用引号包裹,可以是单引号或双引号。
- 布尔值只有
True和False两种,注意首字母大写。
再看一个更实用的例子:交换两个变量的值。
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)中的a和b是形参(形式参数)。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 的思维方式。
编程不是一蹴而就的事,但每一步都算数。从今天开始,写一行代码,就离目标近一点。