简介:本文精选29个由浅入深的Python实战项目,覆盖趣味绘图、经典算法、数据处理、自动化办公、硬件交互与AI入门六大方向。每个项目标注难度与预计耗时,提供可运行代码与关键步骤,帮助零基础读者告别语法焦虑,通过动手实践建立完整编程思维,积累真实项目经验,实现从新手到开发者的平滑进阶。
Python新手学完基础后常陷入”能看不能写”的困境。破解之道只有一条:做项目。项目不必宏大,关键是覆盖一个完整、可感知的场景,让你走完需求分析到调试优化的全链路。
以下29个项目按难度递进排列,附难度等级、预计耗时与所需第三方库,助你按能力选、按兴趣做。
| # | 项目名称 | 难度 | 预计耗时 | 主要库 |
|---|---|---|---|---|
| 1 | 用turtle画卡通形象 | ★ | 1h | turtle |
| 2 | 多进程演示画圆画方 | ★★ | 1.5h | multiprocessing |
| 3 | 冒泡/快速排序实现 | ★★ | 2h | 无 |
| 4 | 二分查找与素数筛 | ★★ | 2h | 无 |
| 5 | 鸡兔同笼穷举求解 | ★ | 1h | 无 |
| 6 | 一元二次方程求根 | ★ | 1h | math |
| 7 | 猜数字与Hangman游戏 | ★★ | 2h | random |
| 8 | 新闻爬虫与OCR识别 | ★★★ | 4h | requests, bs4, pytesseract |
| 9 | 天干地支计算器 | ★★ | 1.5h | 无 |
| 10 | 批量图片压缩加水印 | ★★ | 2h | Pillow |
| 11 | 抬头自动群发邮件 | ★★★ | 3h | smtplib, openpyxl |
| 12 | 树莓派循迹小车 | ★★★★ | 8h | RPi.GPIO |
| 13 | 树莓派人体感应灯 | ★★★ | 4h | RPi.GPIO |
| 14 | 人脸检测最小示例 | ★★★ | 3h | face_recognition |
| 15 | 图像分类迁移学习 | ★★★★ | 5h | torch, torchvision |
| 16-29 | 贪吃蛇、五子棋等游戏 | ★★~★★★★ | 2~8h | pygame等 |
绘图项目反馈最快,适合建立信心。
项目1:用turtle画皮卡丘
核心思路:把角色拆成头部圆、耳朵三角、眼睛小圆等几何块,规划画笔坐标即可。
import turtlet = turtle.Turtle()t.speed(5)t.fillcolor("yellow")t.begin_fill()t.circle(100)t.end_fill()# 耳朵:两个等腰三角形,眼睛:黑色小圆,依次叠加turtle.done()
进阶收获:锻炼将复杂图像拆解为基本图元的结构化思维。
项目2:多进程演示同时画圆画方
原turtle+threading是伪并行示例。改用multiprocessing,并注明限制。
from multiprocessing import Processimport turtleimport timedef draw_circle():t = turtle.Turtle()t.circle(50)time.sleep(1)def draw_square():t = turtle.Turtle()for _ in range(4):t.forward(100)t.right(90)time.sleep(1)if __name__ == "__main__":p1 = Process(target=draw_circle)p2 = Process(target=draw_square)p1.start(); p2.start()p1.join(); p2.join()
注意:CPython下GIL限制线程并行,此为多进程教学示意,非真正同时绘制。
项目3:快速排序与二分查找
def quick_sort(arr):if len(arr) <= 1:return arrpivot = arr[0]left = [x for x in arr[1:] if x <= pivot]right = [x for x in arr[1:] if x > pivot]return quick_sort(left) + [pivot] + quick_sort(right)def binary_search(arr, target):lo, hi = 0, len(arr) - 1while lo <= hi:mid = (lo + hi) // 2if arr[mid] == target:return midelif arr[mid] < target:lo = mid + 1else:hi = mid - 1return -1print(quick_sort([3,1,4,1,5,9]))print(binary_search([1,3,5,7,9], 7))
项目4:鸡兔同笼穷举求解
def solve_chicken_rabbit(heads, feet):for c in range(heads + 1):r = heads - cif 2 * c + 4 * r == feet:return c, rreturn Noneprint(solve_chicken_rabbit(35, 94)) # (23, 12)
项目5:猜数字游戏
import randomdef guess_number():target = random.randint(1, 100)for count in range(1, 101):guess = int(input("请输入1-100的猜测:"))if guess > target:print("大了")elif guess < target:print("小了")else:print(f"正确!用了{count}次")break
项目6:新闻爬虫与OCR识别
前置安装:
pip install requests beautifulsoup4 pytesseract Pillow# Tesseract本体需单独安装:https://github.com/tesseract-ocr/tesseract
合规提醒:爬取前务必检查目标网站robots.txt,遵守爬取频率限制,勿用于商业用途。
import requestsfrom bs4 import BeautifulSoupurl = "https://example.com/news"resp = requests.get(url, headers={"User-Agent": "Mozilla/5.0"})soup = BeautifulSoup(resp.text, "html.parser")title = soup.find("h1").text.strip()print(f"标题:{title}")
OCR部分可调用百度智能云通用文字识别API,需提前在控制台申请API_KEY与SECRET_KEY获取access_token。
项目7:天干地支计算器
利用60甲子周期,通过取余映射公历年份。核心:(year - 4) % 10得天干索引,(year - 4) % 12得地支索引。
项目8:批量图片压缩加水印
from PIL import Imageimport osdef batch_compress(src, dst, quality=50):os.makedirs(dst, exist_ok=True)for f in os.listdir(src):if f.lower().endswith(('.png', '.jpg')):img = Image.open(os.path.join(src, f))img.save(os.path.join(dst, f), quality=quality, optimize=True)
项目9:抬头自动群发邮件
import smtplibfrom email.mime.text import MIMETextfrom email.mime.multipart import MIMEMultipartfrom openpyxl import load_workbookimport timedef send_bulk(excel_path, smtp_server, port, sender, password):wb = load_workbook(excel_path)ws = wb.activeserver = smtplib.SMTP(smtp_server, port)server.starttls()server.login(sender, password)for row in ws.iter_rows(min_row=2, values_only=True):name, email = row[0], row[1]msg = MIMEMultipart()msg['From'] = sendermsg['To'] = emailmsg['Subject'] = f"{name},你好"msg.attach(MIMEText(f"{name},这是一封测试邮件。"))try:server.sendmail(sender, email, msg.as_string())time.sleep(2) # 限速防封except Exception as e:print(f"发送失败 {email}: {e}")server.quit()
建议:设置每封间隔2秒以上,配置正确的SPF/DKIM记录降低进垃圾箱概率。
项目10:树莓派循迹小车
推荐型号:Raspberry Pi 4B,系统Raspberry Pi OS。需红外传感器模块+L298N电机驱动板。GPIO接线参考官方文档:https://www.raspberrypi.com/documentation/computers/gpio.html
感知层读传感器值,决策层Python判断左右偏差并输出PWM,执行层驱动电机转向。
项目11:树莓派感应灯
用PIR人体红外传感器,配合光线传感器实现”天黑+有人”双条件点亮,也可接摄像头做简易人脸判断。
项目12:人脸检测最小示例
安装:pip install face_recognition cmake dlib
import face_recognitionimport cv2img = face_recognition.load_image_file("test.jpg")faces = face_recognition.face_locations(img)print(f"检测到 {len(faces)} 张人脸")for (top, right, bottom, left) in faces:cv2.rectangle(img, (left, top), (right, bottom), (0, 255, 0), 2)cv2.imshow("result", img)cv2.waitKey(0)
实操建议:利用PyTorch模型库做风格迁移或目标检测实验,看到电脑识别出物体的那一刻,成就感远超语法练习。
项目13:贪吃蛇(本地离线版)
仅限本地离线游戏的自动化测试演示,涉及队列存蛇身、碰撞检测、随机刷食物等核心逻辑,严禁用于任何在线排位或联网游戏。
第一阶段(第1-5天):建立兴趣。 从绘图与算法入手,每天一个小目标,用turtle、random等标准库,避免环境搭建挫败。
第二阶段(第1-2周):任务驱动。 挑战自动化与小游戏,当脚本处理百张图片或游戏跑通时,函数与列表会形成肌肉记忆。
第三阶段(第2-4周):技术延伸。 加入硬件与AI,即使无树莓派也可用摄像头模拟器。目标不仅实现功能,更要理解OCR阈值分割、API网络请求等原理。
核心建议:别等”学会”再动手。选一个最感兴趣的项目,写出第一行代码。在Python世界里,项目是最好的导师,”动手”是唯一的通关秘籍。