上周在读者群里看到一段对话,感触很深。一个刚学完 Python 基础语法的同学问:
"哥,变量、循环、函数我都看完了,跟着教程也能敲出来,但是让我自己写一个东西,我就完全没头绪。这正常吗?是不是我不适合学编程?"
下面一堆人回复说"我也这样""我卡在这一步大半年了""教程看了一堆,但合上书啥也写不出来"。
说真的,这不是你笨,也不是你不适合学编程。这恰恰是几乎每一个编程新手都会撞上的"第二道墙"——第一道墙是装环境配编译器,第二道墙就是:基础语法学完了,下一步该做什么?
今天这篇文章,我不讲虚的,直接给你 7 个真实能跑、难度从易到难递进的小项目。每个项目都告诉你:它要做什么、用到哪些知识点、大概要花多长时间、做完能得到什么。挑一个今天就开始吧。
为什么你"看了一堆教程但写不出来"
在讲项目之前,先把这个问题说透。
你学完基础语法之后感觉"会了",那其实是一种幻觉。看教程和写代码是两码事。看教程的时候,你的大脑是在"读懂"别人的思路;写代码的时候,你的大脑要"凭空产生"思路。两者用的根本不是同一块肌肉。
这就像学游泳,看再多视频,读再多教材,不下水你永远学不会。编程也是一样,必须有一个从"读"切换到"写"的练习过程。
这个过程最忌讳的就是一上来就挑战大项目。很多新手自信心膨胀,直接去爬 GitHub 上的爬虫项目、机器学习项目,结果花了一周,连环境都配不对,越学越挫败,最后就放弃了。
正确的方式是:先做几个 1 天就能搞定的小项目,建立"我也能写出能跑的代码"的正反馈,然后再慢慢加难度。下面这 7 个项目,就是按这个思路排的。
7 个新手练手项目,从易到难
项目 1:猜数字游戏
用到的知识点:变量、循环、条件判断、input()、print()、random 模块。
项目描述:程序随机生成一个 1 到 100 的整数,玩家输入数字去猜,程序告诉你"大了"或"小了",直到猜中为止。最后告诉玩家一共猜了几次。
import random number = random.randint(1, 100) count = 0 while True: guess = int(input("请输入1-100的数字: ")) count += 1 if guess > number: print("大了") elif guess < number: print("小了") else: print(f"恭喜!一共猜了{count}次") break
预计耗时:30 分钟到 1 小时。做完能学到什么:第一次完整地走通"写代码 → 跑起来 → 看到结果"的全流程,建立最基本的信心。
项目 2:简易计算器
用到的知识点:函数定义、参数、返回值、字典、if/elif 分支。
项目描述:实现一个能计算加减乘除的计算器。玩家输入两个数字和运算符,程序输出结果。可以让玩家连续算多道题,输入 q 退出。
def calc(a, b, op): ops = {'+': a + b, '-': a - b, '*': a * b, '/': a / b if b != 0 else '错误'} return ops.get(op, '未知运算符') print(calc(10, 5, '+')) # 输出 15 print(calc(10, 5, '*')) # 输出 50
预计耗时:1 到 2 小时。做完能学到什么:第一次用函数封装逻辑,理解"用函数把代码拆成小块"的思维方式。
项目 3:批量重命名文件
用到的知识点:os 模块、字符串拼接、for 循环遍历文件。
项目描述:把一个文件夹下所有 .jpg 文件按顺序重命名为 photo_001.jpg、photo_002.jpg 这种格式。如果文件已经命名过,可以加前缀或者按日期排序。
import os folder = './photos' files = [f for f in os.listdir(folder) if f.endswith('.jpg')] files.sort() for i, filename in enumerate(files, 1): new_name = f'photo_{i:03d}.jpg' old_path = os.path.join(folder, filename) new_path = os.path.join(folder, new_name) os.rename(old_path, new_path) print(f'{filename} -> {new_name}')
预计耗时:2 到 3 小时。做完能学到什么:第一次写一个真正"有用"的小工具,体会到编程解决实际问题的爽感。注意:第一次跑这种操作前,先建个测试文件夹,里面复制几个测试图片,避免误操作真文件。
项目 4:个人记账本(命令行版)
用到的知识点:列表、字典、文件读写(open/write/with)、循环、菜单设计。
项目描述:写一个命令行小工具,可以添加一笔收支(金额、分类、备注),列出所有记录,按月统计总支出。数据存到本地的 txt 或 csv 文件里,下次打开还能看到。
import json from datetime import datetime records = [] def add_record(amount, category, note=''): records.append({ 'time': datetime.now().strftime('%Y-%m-%d %H:%M'), 'amount': amount, 'category': category, 'note': note }) def save(): with open('money.json', 'w', encoding='utf-8') as f: json.dump(records, f, ensure_ascii=False, indent=2) add_record(35.5, '餐饮', '午饭') add_record(120, '购物', '买书') save()
预计耗时:半天到 1 天。做完能学到什么:第一次接触"数据持久化"——程序关掉后数据不丢,这是所有真实应用的基础。这个项目做好了,写进简历也是加分项。
进阶一点的 3 个项目
上面 4 个做完之后,你已经能熟练用变量、函数、文件了。接下来可以挑战下面 3 个:
项目 5:天气查询小工具
用到的知识点:requests 库、JSON 数据解析、API 调用、异常处理。
项目描述:调用一个免费的天气 API(比如和风天气、心知天气),输入城市名,返回当前温度、天气状况、湿度。命令行显示就行。
预计耗时:1 天。做完能学到什么:第一次接触"调用别人家的接口",这是后端开发的核心能力之一。
项目 6:简单爬虫(豆瓣 Top250)
用到的知识点:requests、BeautifulSoup、CSV 文件写入、翻页逻辑。
项目描述:把豆瓣电影 Top250 的电影名、评分、链接爬下来,存到 CSV 文件里。共 10 页,250 条数据。
预计耗时:2 到 3 天。做完能学到什么:理解 HTTP 请求、HTML 解析、翻页逻辑,这些是做数据采集的基本功。注意:爬虫要遵守 robots.txt 协议,不要对别人服务器造成压力,更不要爬取个人隐私数据。
项目 7:个人博客网站(Flask)
用到的知识点:Flask 框架、路由、模板引擎 Jinja2、SQLite 数据库、表单处理。
项目描述:写一个最简单的个人博客。能发布文章、查看文章列表、查看文章详情。不用做登录注册、评论这些复杂功能,先把最核心的"发布+查看"跑通。
from flask import Flask, render_template, request import sqlite3 app = Flask(__name__) @app.route('/') def index(): conn = sqlite3.connect('blog.db') posts = conn.execute('SELECT * FROM posts ORDER BY id DESC').fetchall() conn.close() return render_template('index.html', posts=posts) if __name__ == '__main__': app.run(debug=True)
预计耗时:一周左右。做完能学到什么:第一次做一个完整的 Web 应用,理解前端、后端、数据库是怎么串起来的。这个项目做完,简历上可以自信地写"独立完成 Web 应用开发"。
做完项目后,下一步该怎么走
这 7 个项目做完,你就具备了独立写小工具、小应用的能力,离"初级开发者"的水平已经不远了。但要往更高处走,你还需要做三件事:
第一,把代码传到 GitHub。哪怕是最简单的猜数字游戏,也建议建个仓库传上去。GitHub 就像程序员的简历,面试官会直接点进去看你的代码量和代码风格。
第二,挑一个方向深入。7 个项目里你肯定有最喜欢的那个方向——可能喜欢写爬虫、可能喜欢做网站、可能喜欢做小工具。挑一个,开始系统性地学这个方向的技术栈。比如你选了 Web,那就去学 Django、数据库设计、部署上线。
第三,去读别人的代码。GitHub 上找几个 Star 数比较高的同类项目,看看别人是怎么组织代码的。读别人的代码,是进步最快的方式之一。
最后想跟你说:学编程这件事,最难的不是某个具体的技术,而是"卡住的时候不放弃"。每个写代码超过 5 年的人,都经历过"对着屏幕发愣一下午"的时刻。这很正常,你并不孤独。
今天挑一个项目开始吧。做完了回来告诉我,我帮你看看代码还能怎么改进。
你最近在写什么项目?卡在哪个环节了?或者上面的 7 个项目里你最想做哪个?欢迎在留言区聊聊,看到我都会回复。