Python新手做什么项目好?29个实战练手清单

作者:蛮不讲李2026.11.06 20:17浏览量:0

简介:本文精选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画皮卡丘

核心思路:把角色拆成头部圆、耳朵三角、眼睛小圆等几何块,规划画笔坐标即可。

  1. import turtle
  2. t = turtle.Turtle()
  3. t.speed(5)
  4. t.fillcolor("yellow")
  5. t.begin_fill()
  6. t.circle(100)
  7. t.end_fill()
  8. # 耳朵:两个等腰三角形,眼睛:黑色小圆,依次叠加
  9. turtle.done()

进阶收获:锻炼将复杂图像拆解为基本图元的结构化思维。

项目2:多进程演示同时画圆画方

原turtle+threading是伪并行示例。改用multiprocessing,并注明限制。

  1. from multiprocessing import Process
  2. import turtle
  3. import time
  4. def draw_circle():
  5. t = turtle.Turtle()
  6. t.circle(50)
  7. time.sleep(1)
  8. def draw_square():
  9. t = turtle.Turtle()
  10. for _ in range(4):
  11. t.forward(100)
  12. t.right(90)
  13. time.sleep(1)
  14. if __name__ == "__main__":
  15. p1 = Process(target=draw_circle)
  16. p2 = Process(target=draw_square)
  17. p1.start(); p2.start()
  18. p1.join(); p2.join()

注意:CPython下GIL限制线程并行,此为多进程教学示意,非真正同时绘制。

二、经典算法篇:用数学逻辑破解现实谜题

项目3:快速排序与二分查找

  1. def quick_sort(arr):
  2. if len(arr) <= 1:
  3. return arr
  4. pivot = arr[0]
  5. left = [x for x in arr[1:] if x <= pivot]
  6. right = [x for x in arr[1:] if x > pivot]
  7. return quick_sort(left) + [pivot] + quick_sort(right)
  8. def binary_search(arr, target):
  9. lo, hi = 0, len(arr) - 1
  10. while lo <= hi:
  11. mid = (lo + hi) // 2
  12. if arr[mid] == target:
  13. return mid
  14. elif arr[mid] < target:
  15. lo = mid + 1
  16. else:
  17. hi = mid - 1
  18. return -1
  19. print(quick_sort([3,1,4,1,5,9]))
  20. print(binary_search([1,3,5,7,9], 7))

项目4:鸡兔同笼穷举求解

  1. def solve_chicken_rabbit(heads, feet):
  2. for c in range(heads + 1):
  3. r = heads - c
  4. if 2 * c + 4 * r == feet:
  5. return c, r
  6. return None
  7. print(solve_chicken_rabbit(35, 94)) # (23, 12)

项目5:猜数字游戏

  1. import random
  2. def guess_number():
  3. target = random.randint(1, 100)
  4. for count in range(1, 101):
  5. guess = int(input("请输入1-100的猜测:"))
  6. if guess > target:
  7. print("大了")
  8. elif guess < target:
  9. print("小了")
  10. else:
  11. print(f"正确!用了{count}次")
  12. break

三、数据处理篇:让数据开口说话

项目6:新闻爬虫与OCR识别

前置安装:

  1. pip install requests beautifulsoup4 pytesseract Pillow
  2. # Tesseract本体需单独安装:https://github.com/tesseract-ocr/tesseract

合规提醒:爬取前务必检查目标网站robots.txt,遵守爬取频率限制,勿用于商业用途。

  1. import requests
  2. from bs4 import BeautifulSoup
  3. url = "https://example.com/news"
  4. resp = requests.get(url, headers={"User-Agent": "Mozilla/5.0"})
  5. soup = BeautifulSoup(resp.text, "html.parser")
  6. title = soup.find("h1").text.strip()
  7. print(f"标题:{title}")

OCR部分可调用百度智能云通用文字识别API,需提前在控制台申请API_KEY与SECRET_KEY获取access_token。

项目7:天干地支计算器

利用60甲子周期,通过取余映射公历年份。核心:(year - 4) % 10得天干索引,(year - 4) % 12得地支索引。

四、自动化办公篇:告别重复劳动

项目8:批量图片压缩加水印

  1. from PIL import Image
  2. import os
  3. def batch_compress(src, dst, quality=50):
  4. os.makedirs(dst, exist_ok=True)
  5. for f in os.listdir(src):
  6. if f.lower().endswith(('.png', '.jpg')):
  7. img = Image.open(os.path.join(src, f))
  8. img.save(os.path.join(dst, f), quality=quality, optimize=True)

项目9:抬头自动群发邮件

  1. import smtplib
  2. from email.mime.text import MIMEText
  3. from email.mime.multipart import MIMEMultipart
  4. from openpyxl import load_workbook
  5. import time
  6. def send_bulk(excel_path, smtp_server, port, sender, password):
  7. wb = load_workbook(excel_path)
  8. ws = wb.active
  9. server = smtplib.SMTP(smtp_server, port)
  10. server.starttls()
  11. server.login(sender, password)
  12. for row in ws.iter_rows(min_row=2, values_only=True):
  13. name, email = row[0], row[1]
  14. msg = MIMEMultipart()
  15. msg['From'] = sender
  16. msg['To'] = email
  17. msg['Subject'] = f"{name},你好"
  18. msg.attach(MIMEText(f"{name},这是一封测试邮件。"))
  19. try:
  20. server.sendmail(sender, email, msg.as_string())
  21. time.sleep(2) # 限速防封
  22. except Exception as e:
  23. print(f"发送失败 {email}: {e}")
  24. 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人体红外传感器,配合光线传感器实现”天黑+有人”双条件点亮,也可接摄像头做简易人脸判断。

六、AI启蒙篇:初探深度学习

项目12:人脸检测最小示例

安装:pip install face_recognition cmake dlib

  1. import face_recognition
  2. import cv2
  3. img = face_recognition.load_image_file("test.jpg")
  4. faces = face_recognition.face_locations(img)
  5. print(f"检测到 {len(faces)} 张人脸")
  6. for (top, right, bottom, left) in faces:
  7. cv2.rectangle(img, (left, top), (right, bottom), (0, 255, 0), 2)
  8. cv2.imshow("result", img)
  9. cv2.waitKey(0)

实操建议:利用PyTorch模型库做风格迁移或目标检测实验,看到电脑识别出物体的那一刻,成就感远超语法练习。

七、游戏开发篇:从玩家变开发者

项目13:贪吃蛇(本地离线版)

仅限本地离线游戏的自动化测试演示,涉及队列存蛇身、碰撞检测、随机刷食物等核心逻辑,严禁用于任何在线排位或联网游戏。

进阶路线建议

第一阶段(第1-5天):建立兴趣。 从绘图与算法入手,每天一个小目标,用turtle、random等标准库,避免环境搭建挫败。

第二阶段(第1-2周):任务驱动。 挑战自动化与小游戏,当脚本处理百张图片或游戏跑通时,函数与列表会形成肌肉记忆。

第三阶段(第2-4周):技术延伸。 加入硬件与AI,即使无树莓派也可用摄像头模拟器。目标不仅实现功能,更要理解OCR阈值分割、API网络请求等原理。

核心建议:别等”学会”再动手。选一个最感兴趣的项目,写出第一行代码。在Python世界里,项目是最好的导师,”动手”是唯一的通关秘籍。