给中级Python开发者的13个练手项目,适合你不?
off999 2024-11-02 12:27 24 浏览 0 评论
选自realpython
作者:Habeeb Shopeju
机器之心编译参与:高璇
学习 Python 的基础知识是一种美妙的体验。但对于中级 Python 开发人员来说,很多项目要么过难,要么过易。本文将列出十三个适合中级 Python 开发人员练手的项目。
Web 项目设计
内容聚合器(Content Aggregator)
1. 技术细节
该项目设计的主要目标是聚合内容。首先,我们需要知道内容聚合器从哪些站点获取内容。然后,使用请求库来发送 HTTP 请求,并使用 BeautifulSoup 解析和抓取站点的必要内容。
该应用程序可以将其内容聚合作为后台进程进行实现。celery 或 apscheduler 等库可以提供帮助。建议尝试 apscheduler。它非常适用于小型后台进程。
从各个站点抓取的内容需要进行保存。因此,需要使用数据库。
2. 额外挑战
对于更严峻的挑战,可以通过以下网站进行学习并获得更多信息:https://realpython.com/python-web-scraping-practical-introduction/
还可以在网站上订阅内容聚合文章。每天结束时,内容聚合器会将当天的文章发送到用户的电子邮箱。
正则表达式查询工具
1. 技术细节
这类项目的主要目的是判别用户输入的查询字符串的有效性。可以让它给出有效和无效的判别,例如「查询字符串有效」和「查询字符串无效」,以绿色显示有效,以红色显示无效。
不必从头开始构造查询工具。使用 Python 的标准 relibrary,就可以对输入的文本运行查询字符串。当查询字符串不匹配时,re 库将返回 None,当匹配时,将返回匹配的字符串。
有些用户可能无法完全理解正则表达式,因此读者可以自己创建一个页面来解释正则表达式的工作原理。写一个足够有趣的文档,让用户对学习和理解正则表达式产生兴趣。
2. 额外挑战
制作一个只返回正则表达式有效性的项目很好。但也可以添加替换功能。这意味着应用程序将检查正则表达式的有效性,并允许用户用其他内容替换匹配的字符串。因此,该工具不再只是查询工具,也成为了替换工具。
网址缩短(URL Shortener)
1. 技术细节
该项目设计的主要目标是缩短 URL。应用程序在缩短 URL 后,再访问缩短的 URL 时将用户重定向到原始 URL。
在应用程序中,用户将输入原始 URL,最后获得新的缩短 URL。为此,可以使用 random 和 string 模块的组合来生成缩短版 URL 的字符。
由于用户将在几天、几个月甚至几年后访问缩短的 URL,因此需要将原始 URL 和缩短的 URL 保存在数据库中。当出现请求时,应用程序会检查 URL 是否存在并重定向到原始 URL,否则会重定向到 404 页面。
2. 额外挑战
使用随机字符生成缩短 URL 比长且随机字符的 URL 更好。通过添加功能来自定义 URL,用户就可以自定义生成的 URL。
毫无疑问,自定义 xyz.com/mysite URL 比随机生成的 xyz.com/piojwr URL 更好。
便利贴功能
1. 技术细节
该项目的主要目的是让用户记下自己的想法。即每个用户都有自己的笔记,因此应用程序需要具有帐户创建功能。这确保了每个用户的笔记都是私人的。
django 带有用户身份验证系统,因此它可能是一个不错的选择。你可以使用其他框架,如 bottle 和 flask,但你必须自己实现用户身份验证系统。
由于用户可能需要在不同情境下记录不同的笔记,因此实现用户的笔记分类功能将使应用程序更实用。
例如,你可能需要记录一些算法和数据结构,因此需要将不同的笔记划分到各自类别中。
你需要存储每个用户的信息和笔记,因此数据库成为该项目的重要组成部分。如果想使用 MySQL 数据库或用于 PostgreSQL 数据库的 psycopg2 模块,可以使用 MySQLdb 模块。还可以使用其他模块,但这完全取决于你选择使用的数据库。
2. 额外挑战
用户忘记自己的想法是人之常情,甚至有时会忘记自己记了笔记。你可以添加一个功能,提醒用户他们记了笔记。此功能允许用户设置提醒时间,应用程序将通过电子邮件提醒用户。
测验
1. 技术细节
这个项目的主要目标是设置测验并让人们作答。因此,用户应该能够设置问题,其他用户应该能够回答这些问题。然后,应用程序将显示最终得分和正确答案。
如果希望用户能够记录他们的分数,则需要实现帐户创建功能。
创建测试的用户应该能够通过上传文本文件来创建带有问题和答案的测试。文本文件应该能够转换成用户需要的格式,因此应用程序可以将文件转换为测验格式。
你还需要为此项目创建数据库。数据库将存储每个用户的问题、可能的答案、正确的答案和分数。
2. 额外挑战
可以允许用户在测验中添加计时器。这样,测验的创建者可以确定用户在测验中的每个问题上花多长时间。
同时拥有测验分享功能也很棒,这样用户可以在其他平台上与朋友分享有趣的测验。
GUI 项目设计
MP3 播放器
1. 技术细节
该项目的主要目标是允许用户播放 MP3 和数字音频文件。为了吸引用户,应用程序必须具有简单但美观的用户界面。
可以添加一个能列出可用 MP3 文件的界面。还可以为用户列出其他非 MP3 的数字音频文件。
用户还希望 MP3 播放器具有显示正在播放的文件信息的界面。其中可以包括文件名、长度、播放时长以及未播放时长(以分钟和秒为单位)。
Python 具有可以播放音频文件的库,如 pygame,使用几行代码即可处理多媒体文件。还可以查看 pymedia(https://pypi.org/project/PyMedia/)和 simpleaudio。
这些库可以处理大量的数字音频文件。包括 MP3 文件和其他格式的音频文件。
此外,这些库还有允许用户创建播放列表的功能。为此,需要一个数据库来存储创建的播放列表的信息。Python 的 sqlite3 模块允许使用 SQLite 数据库。
在这种情况下,SQLite 数据库是更好的选择,因为它是基于文件的,并且比其他 SQL 数据库更容易设置。虽然 SQLite 是基于文件的,但它能比常规文件更好地保存数据。
2. 额外挑战
如果上面的都做到了,你还可以添加一项功能,以允许 MP3 播放器重复播放当前正在播放的文件,甚至可以实现随机播放。
还可以添加增加和降低音频文件播放速度的功能。用户会很喜欢这一功能,因为他们能够以比平时更慢或更快的速度播放音频文件。
闹铃提醒工具
1. 技术细节
该项目的主要目标是在一天中的特定时间激活音频信号。因此,定时和音频信号播放是闹铃工具中最重要的部分。
闹铃工具应允许用户创建、编辑和删除闹铃。它还应该有一个能列出所有未被删除的闹铃界面。因此,它应列出活动闹铃和闲置闹铃。
由于它是一个闹铃,应用程序必须在规定的时间播放音频。用于播放音频的库有 pygame 库等。
在代码逻辑中,应用程序必须不断检查设置的闹铃时间。到达时间后,它会触发一个播放闹钟铃声的功能。
由于应用程序将检查设置的闹铃时间,这意味着应用程序必须将其保存在数据库中。数据库应存储闹铃日期、时间和音频等内容。
2. 额外挑战
你也可以允许用户设置定期闹铃。用户能够设置在每周的某些日子、特定时间响铃。例如,可以在每个星期一下午 2:00 设置闹铃。
还可以添加暂停功能,以便用户可以暂停闹钟而不是解除闹钟。
文件管理器
1. 技术细节
文件管理器项目的主要目标是为用户提供管理文件的界面。用户需要一个易上手又实用的文件管理器。
可以使用 PySimpleGUI 库创建具有一个功能强大的由小部件组成的用户界面,该界面也无需处理大量复杂工作。
用户应该能够完成一些简单的任务,如创建新目录或空文本文件。还应该能够复制和移动文件或目录。
sys、os 和 shutil 库对此项目非常有用,它们可用于在用户点击时对后台文件执行操作。
网格视图和列表视图是目前比较受欢迎的视图,因此你可以在应用程序中实现这两种视图。用户可以选择适合他们的视图选项。
2. 额外挑战
要使文件管理器更高级,可以加入搜索功能。用户无需手动查找即可搜索文件和目录。
此外,还可以实现排序功能。用户根据不同的顺序对文件进行排序,例如时间、字母顺序或大小。
记账功能
1. 技术细节
该项目的主要目标是跟踪用户的支出。为了向用户提供正确信息,并帮助他们优化支出,需要进行一些统计分析。
虽然跟踪费用是关键,但良好的界面也很重要。使用 PySimpleGUI,你可以创建一个独特的界面来改善用户体验。
诸如 pandas 和 matplotlib 之类的 PyData 库可以帮助设计记账工具。
pandas 库可用于数据分析,matplotlib 库可用于绘制图形。图表将为用户提供其支出的直观表示,并且可视化通常更容易理解。
应用程序将从用户那里获得数据。这里的数据是输入的支出。因此,费用需要存储在数据库中。SQLite 数据库是该项目的一个很好的选择,因为它可以快速设置。可以将 sqlite3 模块用于 SQLite 数据库。
2. 额外挑战
为了让用户从这个项目中受益,他们需要在应用程序中定期输入自己的支出,但人们可能经常遗忘。所以添加一个提醒功能很有效。如此一来,应用程序就会在每天或每周的特定时间发送通知,提醒用户们使用记账工具。
命令行项目设计
通讯录
1. 技术细节
该项目的主要目标是保存联系方式。设置可以让用户输入联系人详细信息的命令非常重要。可以使用 argparse 或 clickcommand-line 框架。它们简化了很多复杂的东西,所以你只需要关注执行命令时要运行的逻辑即可。
此外,还有一些功能需要实现,如删除联系人、更新联系人信息和列出已保存联系人。还可以允许用户使用不同顺序列出联系人,例如字母顺序或联系人创建日期。
它是一个命令行项目,用 SQLite 数据库就可以很好地保存联系人。SQLite 的设置非常友好。你可以将联系人详细信息保存在文件中,但文件不会具有 SQLite 的优势,例如更好的性能和安全性。
要在此项目中使用 SQLite 数据库,Python sqlite3 模块将非常有用。
2. 额外挑战
还记得数据库是如何存储在用户的计算机上的吗?如果用户文件丢失了会怎么样?这意味着他们也会失去联系方式。
进一步的挑战是将数据库备份到在线存储平台。为此,可以按特定间隔将数据库文件上传到云。 还可以添加允许用户自己备份数据库的命令。这样,如果数据库文件丢失,用户仍然可以访问联系人。
应该注意,你可能需要某种形式的标识,这样通讯录就可以识别哪个数据库文件属于哪个用户。实现用户身份验证功能是实现此功能的一种方法。
网站连接检查
1. 技术细节
该项目的主要目标是检查网站的状态。因此需要编写用于检查网站状态的代码。
你可以选择使用 TCP 或 ICMP 进行连接。socket 模块是用于检查的模块。还可以阅读 Python 指南中的 socket 编程。
无论是 docopt、click 还是 argparse 框架,都可以添加命令,从而允许用户在要检查的网站列表中添加和删除某网站。
用户还应该能够启动工具、停止工具并确定间隔。
由于必须保存要检查的文件列表,因此我们可以将其保存在文件(只是网站列表)中,也可以通过 sqlite3 模块使用 SQLite 数据库。
2. 额外挑战
该应用程序也可以检查站点的连接状态,并将结果显示在命令行中。但这要求用户继续检查命令行。
也可以增加通知功能。通知功能可以在站点状态发生变化时,在后台通过声音提醒用户。你需要一个数据库来存储网站的先前状态。这是该工具可以判断状态何时发生变化的唯一方式。
批量文件重命名工具
1. 技术细节
这个项目的主要目标是重命名文件。因此,应用程序需要找到一种操作目标文件的方法。os、sys 和 shutil 库对这个项目很有用。
你的用户将能够使用命名约定重命名目录中的所有文件。因此,他们应该能够自主制定命名约定。如果你了解正则表达式的工作原理,那么 regex 模块能辅助匹配所需的命名模式。
用户可能希望传递命名约定(例如 myfiles)作为命令的一部分,并期望该工具能重命名所有文件,如 myfilesXYZ,其中 XYZ 是数字。他们还应该能够选择要重命名的文件所在的目录。
2. 额外挑战
该项目的主要挑战是重命名目录中的所有文件。但是用户可能只需要命名一定数量的文件。因此你可以实现一项功能,允许用户选择要重命名的文件数,而不是所有文件。
请注意,仅重命名一定数量的文件将需要该工具根据字母顺序、文件创建时间或文件大小对文件进行排序,具体取决于用户的要求。
目录树生成器
1. 技术细节
目录树生成器的主要目标是可视化文件和目录之间的关系。os 库在列出目录和所选目录中的文件时非常有用。
诸如 docopt 或 argparse 之类的框架能简化很多内容,使你可以专注于为应用程序的逻辑编写代码。
在应用程序的逻辑中,你可以决定如何表示文件或目录。使用不同的颜色是一个很好的方法。你可以使用 colored 库以不同颜色打印文件和目录。
还应该可以设定目录树生成器的深度。例如,如果一个目录的子目录有 12 级,而你只需要用到第五级。
如果你愿意,还可以让用户自主决定目录树生成器的深度。
2. 额外挑战
由于生成的目录树结果将出现在命令行上,因此可以更进一步,让生成器创建目录树的图像,即实现文本转图像的操作。
pillow (https://pillow.readthedocs.io/en/stable/) 库对此非常有用。
原文链接:https://realpython.com/intermediate-python-project-ideas/
相关推荐
- 戴尔官网保修查询入口(戴尔售后保质期查询)
-
可以按照以下步骤查询戴尔笔记本电脑的保修期:1.打开戴尔官网:https://www.戴尔.com/zh-cn/售后服务/保修政策.html2.点击页面上方的“服务与支持”按钮,进入戴尔的服务支持...
- 手机号邮箱登录入口(手机号邮箱官网)
-
手机163邮箱登录入口如下:163邮箱官网入口:https://smart.mail.163.com/login.htm点击进入登录或者注册邮箱即可。手机浏览器访问进入官网http://www.123...
- sd卡(sd卡无法读取怎么修复)
-
SD卡是大卡,相机用的;普通的手机内存卡,是小卡,正规的名称是macrosd卡,也就是微型SD卡。可以通过卡套转为普通的SD卡的大小。 其实就是大小不同。但手机上的内存卡,人们经常也俗称为SD...
- windows7蓝牙功能在哪里打开
-
点击搜索框在windows7系统主界面点击开始菜单,点击打开搜索框。输入命令输入services.msc后回车,在列表中找到并右击BluetoothSupportS...点击属性选择进入属性菜单,...
-
- 2010激活密钥(microsoft2010激活密钥)
-
步骤/方式1officeprofessionalplus2010:(office专业版)6QFdx-pYH2G-ppYFd-C7RJM-BBKQ8Bdd3G-xM7FB-Bd2HM-YK63V-VQFdKVYBBJ-TRJpB-QFQ...
-
2025-11-19 04:03 off999
- 联想官方刷新bios工具(联想电脑刷新bios)
-
刷新BIOS需要使用联想的官方网站或授权维修中心来进行操作。以下是一些基本步骤:1.访问联想的官方网站,找到BIOS更新程序并下载。在下载过程中,请确保选择与您计算机型号匹配的版本。2.将下载的B...
-
- 苹果ios14系统下载(苹果ios14.1下载)
-
1方法一步骤/方式一打开Appstore。步骤/方式二在搜索栏点击搜索框。步骤/方式三搜索并点击需要下载的软件。步骤/方式四点击获取。步骤/方式五最后验证ID密码即可。1.在应用商店搜索你要下载的应用名称。2.点击下载按钮,如果要求登...
-
2025-11-19 03:03 off999
- office2010怎么免费永久激活密钥
-
用这个试试,一个KMS激活工具可以激活2010到2019的Office自家的目前用的就是这个microsoft6477.moe/1716.html直接使用这个Microsoftoffice2010...
-
- 类似爱加速的国内ip(类似爱加速的app)
-
推荐“V8盒子”。这一款免费无广告的模拟器,不同于其它软件盒子,而是类似于X8沙箱,满足游戏多开,画中画,悬浮球操作,熄屏后台运行等多功能的沙箱盒子.支持一键root,一键安装xposed框架,能在安卓/苹果手机上运行多个安卓/ios虚拟系...
-
2025-11-19 02:03 off999
- 阿里旺旺手机客户端(阿里旺旺手机app)
-
手机淘宝的旺旺在打开商品后,会看到左下角有个旺旺的图标,点击就可以联系了。 阿里旺旺是将原先的淘宝旺旺与阿里巴巴贸易通整合在一起的一个新品牌。它是淘宝和阿里巴巴为商人量身定做的免费网上商务沟通软件,...
- 最纯净的pe装机工具(pe工具哪个纯净)
-
U盘装系统步骤:1.制作U盘启动盘。这里推荐大白菜U盘启动盘制作工具,在网上一搜便是。2.U盘启动盘做好了,我们还需要一个GHOST文件,可以从网上下载一个ghost版的XP/WIN7/WIN8系统,...
- 装一个erp系统多少钱(wms仓库管理软件)
-
现在主流有客户端ERP和云端ERP两种客户端通常一次买断,价格在万元左右,但是还有隐性费用,你需要支付服务器、数据管理员,此外如果系统需要更新维护,你还需要支付另外一笔不菲的费用。云端ERP:优势...
- cad2014序列号和密钥永久(autocad2014序列号和密钥)
-
1在cad2014中修改标注样式后,需要将其保存2单击“样式管理器”按钮,在弹出的窗口中选择修改后的标注样式,然后单击“设置为当前”按钮,再单击“保存当前样式”按钮,将其保存为新的样式名称3为了...
- qq修改密保手机号(qq修改密保手机号是什么意思)
-
QQ更改绑定的手机号码操作步骤如下:1、打开手机主界面,找到“QQ”软件点击打开。2、输入正确的QQ账户和密码登录到qq主界面。3、点击左上角的头像“图片”,进入到个人中心界面。4、进入到个人中心界面...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
python入门到脱坑 输入与输出—str()函数
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
宝塔面板如何添加免费waf防火墙?(宝塔面板开启https)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
慕ke 前端工程师2024「完整」
-
失业程序员复习python笔记——条件与循环
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
