8个适合Python小白的入门项目!简单易上手,练完基础稳了

很多小白学Python会陷入“只学语法,不敢动手”的困境——其实入门阶段最该做**“低门槛、高反馈”的小项目**:不用复杂框架,30-100行代码就能搞定,还能解决实际问题(比如整理文件、统计数据),做完既有成就感,又能巩固语法。

下面推荐8个项目,按“难度从低到高、实用性从强到弱”排序,每个项目都附「核心知识点+步骤提示+进阶方向」,小白跟着做就行!

一、日常工具类(最实用,优先练)

这类项目能帮你解决生活/学习中的小问题,做完就能用,成就感拉满~

1. 待办清单(入门首选)

项目目标:

做一个能“添加待办、标记完成、查看所有待办”的小工具,支持把待办存到文件里(关闭后再打开不丢失)。

用到的知识点:
  • • 基础语法:列表(存待办)、字典(每个待办包含“内容+是否完成”)、循环/条件判断
  • • 文件操作:用open()读写txt文件,保存待办数据
步骤提示:
  1.  定义3个核心函数:add_todo()(添加待办)、show_todos()(展示待办)、save_todos()(保存到文件);
  2.  用while True做循环菜单,让用户选择“添加/查看/退出”;
  3.  启动时先读txt文件,加载之前的待办;退出时调用save_todos(),把当前待办存起来。
进阶方向:
  •  加“删除待办”“修改待办”功能;
  •  用datetime模块给待办加“截止时间”,到期提醒。
参考代码片段(核心部分):
# 加载待办(从txt文件) def load_todos():     try:         with open("todos.txt", "r", encoding="utf-8") as f:             todos = eval(f.read())  # eval把字符串转成列表(简单场景可用)     except FileNotFoundError:         todos = []  # 第一次用,创建空列表     return todos # 保存待办(到txt文件) def save_todos(todos):     with open("todos.txt", "w", encoding="utf-8") as f:         f.write(str(todos)) # 主逻辑 todos = load_todos() while True:     print("\n1. 添加待办 2. 查看待办 3. 退出")     choice = input("选一个操作:")     if choice == "1":         content = input("输入待办内容:")         todos.append({"content": content, "done": False})         print("添加成功!")     elif choice == "2":         print("\n你的待办:")         for i, todo in enumerate(todos, 1):             status = "✅ 已完成" if todo["done"] else "❌ 未完成"             print(f"{i}. {todo['content']} - {status}")     elif choice == "3":         save_todos(todos)         print("待办已保存,再见!")         break

2. 批量文件重命名工具

项目目标:

比如你有100张照片(命名混乱如“IMG_202301.jpg”“DSC_001.png”),用这个工具统一改成“旅行_1.jpg”“旅行_2.png”,支持按文件类型筛选(只改jpg,不改png)。

用到的知识点:
  •  os模块:遍历文件夹、获取文件信息、重命名文件
  •  字符串操作:提取文件后缀(如“jpg”)、拼接新文件名
步骤提示:
  1.  让用户输入“目标文件夹路径”(比如C:/Users/XXX/照片)和“统一前缀”(比如“旅行”);
  2.  用os.listdir()遍历文件夹里的所有文件;
  3.  对每个文件,判断后缀是否符合(比如只处理.jpg/.png);
  4.  用os.rename()把文件改成“前缀_序号.后缀”(如“旅行_1.jpg”)。
进阶方向:
  •  支持“按修改时间排序”后重命名(比如最早拍的照片叫“旅行_1.jpg”);
  •  加“撤销重命名”功能(把修改记录存到文件,可恢复)。

3. Excel成绩统计小助手

项目目标:

给定一个Excel表格(包含“姓名、语文、数学、英语”三列),自动计算“总分、平均分”,并找出“总分最高的学生”“各科不及格人数”。

用到的知识点:
  •  pandas库(入门级数据处理库,安装:pip install pandas openpyxl
  •  基础统计:求和(sum())、平均值(mean())、筛选(df[df["语文"]<60]
步骤提示:
  1.  用pandas.read_excel("成绩表.xlsx")读取Excel文件;
  2.  新增“总分”列:df["总分"] = df["语文"] + df["数学"] + df["英语"]
  3.  新增“平均分”列:df["平均分"] = df["总分"] / 3
  4.  统计结果:比如max_student = df.loc[df["总分"].idxmax(), "姓名"](总分最高的学生);
  5.  用df.to_excel("统计后成绩表.xlsx", index=False)保存结果到新Excel。
进阶方向:
  •  用matplotlib画“各科成绩分布直方图”;
  •  支持按“班级”分组统计(如果表格有“班级”列)。

二、简单交互类(练逻辑,有趣味)

这类项目有“用户交互”(比如输入、选择),能帮你练逻辑思维,代码跑起来像个小“应用”。

4. BMI计算器(健康相关,易理解)

项目目标:

用户输入“身高(米)”和“体重(公斤)”,自动计算BMI值,并判断体型(偏瘦/正常/超重/肥胖)。

用到的知识点:
  •  输入输出:input()获取用户输入,print()展示结果(注意把字符串转成数字:float(input())
  •  条件判断:if-elif-else(根据BMI范围判断体型)
  •  公式计算:BMI = 体重 / (身高 × 身高)
步骤提示:
  1.  打印欢迎语,说明BMI计算规则;
  2.  获取用户输入的身高和体重(注意处理“输入不是数字”的情况,比如用try-except避免报错);
  3.  计算BMI值(保留1位小数:round(bmi, 1));
  4.  用条件判断输出体型:比如BMI<18.5→偏瘦,18.5≤BMI<24→正常。
进阶方向:
  •  加“历史记录”功能,把每次计算的“时间、身高、体重、BMI”存到txt;
  •  针对不同体型,给出健康建议(比如“偏瘦建议多摄入蛋白质”)。

5. 单词记忆卡(学习辅助,实用)

项目目标:

内置10-20个英语单词(比如“apple-苹果”“book-书”),随机展示英文,让用户输入中文,判断对错,最后统计正确率。

用到的知识点:
  •  字典:用键值对存“英文-中文”(如words = {"apple": "苹果", "book": "书"}
  •  random模块:random.choice(list(words.keys()))随机选英文单词
  •  循环统计:用变量记录“答题总数”和“正确数”,最后算正确率。
步骤提示:
  1.  定义单词字典;
  2.  初始化“正确数=0”“总数=0”;
  3.  循环10次(或让用户选择退出):
    •  随机选一个英文单词;
    •  用户输入中文翻译;
    •  对比输入和字典里的中文,正确则正确数+1;
    •  总数+1;
  4.  循环结束,打印“正确率:XX%”。
进阶方向:
  •  从txt文件读取单词(支持用户自己添加单词);
  •  错词收集:把答错的单词存起来,最后让用户重新默写。

三、小游戏类(最有趣,防枯燥)

如果觉得工具类项目无聊,试试小游戏——互动性强,能让你主动解决问题(比如“怎么让蛇吃到食物”“怎么判断猜中数字”)。

6. 猜数字游戏(入门经典)

项目目标:

程序随机生成1-100之间的整数,用户猜数字,程序提示“太大了”“太小了”,直到猜对,最后统计“猜了多少次”。

用到的知识点:
  •  random模块:random.randint(1, 100)生成随机数
  •  循环:while True(直到猜对才退出循环)
  •  条件判断:对比用户输入和随机数,给提示
步骤提示:
  1.  生成随机数:secret_num = random.randint(1, 100)
  2.  初始化“次数=0”;
  3.  循环:
    •  用户输入猜测的数字(转成整数);
    •  次数+1;
    •  若输入>随机数→提示“太大了”;若输入<随机数→提示“太小了”;若相等→提示“猜对了!共猜了X次”,退出循环。
进阶方向:
  •  加“难度选择”:简单(1-50,10次机会)、中等(1-100,7次机会)、困难(1-200,5次机会);
  •  记录“历史最佳成绩”(最少猜测次数),存到文件。

7. 贪吃蛇简化版(图形化入门)

项目目标:

pygame库做一个简化版贪吃蛇:黑色小方块是蛇,红色小方块是食物,按方向键控制蛇移动,吃到食物蛇变长,撞到边界或自己游戏结束。

用到的知识点:
  •  pygame库(简单图形化库,安装:pip install pygame
  •  循环刷新:pygame.time.Clock()控制游戏帧率
  •  事件处理:监听键盘方向键(pygame.event.get()
步骤提示:
  1.  初始化pygame:pygame.init(),设置窗口大小(如400×400);
  2.  定义蛇的初始状态:比如“蛇身是3个黑色方块,初始方向向右”;
  3.  随机生成食物位置(红色方块);
  4.  游戏主循环:
    •  监听方向键,改变蛇的移动方向;
    •  更新蛇头位置,判断是否吃到食物(蛇头和食物位置重合→蛇身变长,重新生成食物);
    •  判断是否撞边界(蛇头超出窗口)或撞自己(蛇头碰到蛇身)→游戏结束;
    •  刷新屏幕,绘制蛇和食物,控制帧率(如10帧/秒)。
进阶方向:
  •  加分数系统(吃到食物得10分),显示在窗口顶部;
  •  蛇移动速度随分数增加(分数越高,帧率越高)。

8. 石头剪刀布(双人互动)

项目目标:

支持“玩家VS电脑”:玩家输入“石头/剪刀/布”,电脑随机出,判断胜负,最后统计“玩家胜/电脑胜/平局”次数。

用到的知识点:
  •  列表:choices = ["石头", "剪刀", "布"],电脑从列表里随机选
  •  条件判断:制定胜负规则(比如“石头赢剪刀,剪刀赢布,布赢石头”)
  •  循环统计:记录3种结果的次数,支持多轮游戏
步骤提示:
  1.  初始化“玩家胜=0”“电脑胜=0”“平局=0”;
  2.  循环(让用户选择“继续”或“退出”):
    •  玩家输入选择(注意处理“输入错误”,比如用户输“石块”→提示重新输入);
    •  电脑随机选:computer_choice = random.choice(choices)
    •  对比两者选择,判断胜负(比如玩家“石头”,电脑“剪刀”→玩家胜,玩家胜次数+1);
    •  打印结果(如“你出石头,电脑出剪刀→你赢了!”);
  3.  退出时,打印“最终统计:玩家胜X次,电脑胜Y次,平局Z次”。
进阶方向:
  •  支持“三局两胜制”,先赢2局的一方获胜;
  •  记录“历史对战记录”,存到txt文件(包含“时间、玩家选择、电脑选择、结果”)。

小白项目学习建议:

  1.  先拆需求,再写代码:比如做“待办清单”,先想“需要哪些功能?每个功能要几步?”,不要上来就写代码;
  2.  遇到报错别慌:比如“文件找不到”→检查文件路径是否正确;“类型错误”→看是不是把字符串和数字混用了,用print()打印变量值排查;
  3.  做完再优化:先实现“核心功能”(比如待办清单先实现“添加+查看”),再加“进阶功能”(比如保存到文件、删除待办);
  4.  查文档比背代码重要:比如忘了os模块怎么重命名文件,搜“Python os.rename 用法”,官网文档或菜鸟教程都有清晰例子。

这些项目都能在1-2小时内完成,练完不仅能巩固if、循环、列表、字典、文件操作这些基础,还能让你明白“Python能解决什么问题”——比单纯背语法有趣多了!先从“待办清单”或“BMI计算器”开始,慢慢积累成就感吧~

Read more

哈希表进阶:挑战用哈希桶封装unordered_set和unordered_map,帮你深度理解迭代器!!!

哈希表进阶:挑战用哈希桶封装unordered_set和unordered_map,帮你深度理解迭代器!!!

专栏:🎉《C++》 📌《数据结构》 💡《C语言》 🚀《Linux》 前言 前一篇文章:《【高阶数据结构】哈希表 》中我们已经分析了哈希表结构,以及如何用开放定址法和链地址法(哈希桶)设计实现哈希表,最主要的就是:怎样避免哈希冲突,显然,哈希桶完胜开放定址法。所以,我们今天进一步完善哈希桶的结构,然后来自己封装unordered_set和unordered_map。 目录 前言 一、常见接口详解(C++标准库) 1.1、unordered_set / unordered_map 1.2、接口测试 💦插入 / 遍历比较: 💦性能测试 二、哈希桶实现(进阶) 2.1、模板参数说明 2.2、获取键值---仿函数 2.

By Ne0inhk
前端异常捕获与统一格式化:从 console.log(error) 到服务端上报

前端异常捕获与统一格式化:从 console.log(error) 到服务端上报

🧑 博主简介:ZEEKLOG博客专家,「历代文学网」(公益文学网,PC端可以访问:https://lidaiwenxue.com/#/?__c=1000,移动端可关注公众号 “ 心海云图 ” 微信小程序搜索“历代文学”)总架构师,首席架构师,也是联合创始人!16年工作经验,精通Java编程,高并发设计,分布式系统架构设计,Springboot和微服务,熟悉Linux,ESXI虚拟化以及云原生Docker和K8s,热衷于探索科技的边界,并将理论知识转化为实际应用。保持对新技术的好奇心,乐于分享所学,希望通过我的实践经历和见解,启发他人的创新思维。在这里,我希望能与志同道合的朋友交流探讨,共同进步,一起在技术的世界里不断学习成长。 🤝商务合作:请搜索或扫码关注微信公众号 “ 心海云图 ” 前端异常捕获与统一格式化:从 console.log(error) 到服务端上报 引言 在前端开发中,异常监控是保证应用稳定性的重要一环。当用户遇到页面白屏、功能不可用等问题时,如果能及时收集到详细的错误信息(包括堆栈、

By Ne0inhk
前端八股文面经大全:字节前端一面(2026-2-1)·面经深度解析

前端八股文面经大全:字节前端一面(2026-2-1)·面经深度解析

前言 大家好,我是木斯佳。 在这个春节假期,当大家都在谈论返乡、团圆与休息时,作为一名技术人,我的思考却不由自主地转向了行业的「冬」与「春」。 相信很多人都感受到了,在AI浪潮的席卷之下,前端领域的门槛在变高,纯粹的“增删改查”岗位正在肉眼可见地减少。曾经热闹非凡的面经分享,如今也沉寂了许多。但我们都知道,市场的潮水退去,留下的才是真正在踏实准备、努力沉淀的人。学习的需求,从未消失,只是变得更加务实和深入。 正值春节,也是复盘与规划的好时机。结合ZEEKLOG这次「春节代码贺新年」活动所提倡的“用技术视角记录春节、复盘成长”,我决定在这个假期持续更新专栏,帮助年后参加春招的同学。 这个专栏的初衷很简单:拒绝过时的、流水线式的PDF引流贴,专注于收集和整理当下最新、最真实的前端面试资料。 我会在每一份面经和八股文的基础上,尝试从面试官的角度去拆解问题背后的逻辑,而不仅仅是提供一份静态的背诵答案。无论你是校招还是社招,目标是中大厂还是新兴团队,只要是真实发生、有价值的面试经历,我都会在这个专栏里为你沉淀下来。 温馨提示:市面上的面经鱼龙混杂,

By Ne0inhk