Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >13 个适合『中级开发者』练手的项目

13 个适合『中级开发者』练手的项目

作者头像
小小詹同学
发布于 2019-10-11 15:33:26
发布于 2019-10-11 15:33:26
1.6K0
举报
文章被收录于专栏:小詹同学小詹同学

本文整理自『机器之心』

编辑 / sitin

本文将列出十三个适合中级 Python 开发人员练手的项目。

Web 项目设计

1、内容聚合器(Content Aggregator)

1、 技术细节

该项目设计的主要目标是聚合内容。首先,我们需要知道内容聚合器从哪些站点获取内容。然后,使用请求库来发送 HTTP 请求,并使用 BeautifulSoup 解析和抓取站点的必要内容。

该应用程序可以将其内容聚合作为后台进程进行实现。celery 或 apscheduler 等库可以提供帮助。建议尝试 apscheduler。它非常适用于小型后台进程。

从各个站点抓取的内容需要进行保存。因此,需要使用数据库

2、额外挑战

对于更严峻的挑战,可以通过以下网站进行学习并获得更多信息:https://realpython.com/python-web-scraping-practical-introduction/

还可以在网站上订阅内容聚合文章,每天结束时,内容聚合器会将当天的文章发送到用户的电子邮箱。

2、正则表达式查询工具

1、技术细节

这类项目的主要目的是判别用户输入的查询字符串的有效性。可以让它给出有效和无效的判别,例如“查询字符串有效”和“查询字符串无效”,以绿色显示有效,以红色显示无效。

不必从头开始构造查询工具。使用 Python 的标准 relibrary,就可以对输入的文本运行查询字符串。当查询字符串不匹配时,re 库将返回 None,当匹配时,将返回匹配的字符串。

有些用户可能无法完全理解正则表达式,因此读者可以自己创建一个页面来解释正则表达式的工作原理。写一个足够有趣的文档,让用户对学习和理解正则表达式产生兴趣。

2、额外挑战

制作一个只返回正则表达式有效性的项目很好,但也可以添加替换功能。这意味着应用程序将检查正则表达式的有效性,并允许用户用其他内容替换匹配的字符串。因此,该工具不再只是查询工具,也成为了替换工具。

3、网址缩短(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 更好。

4、便利贴功能

1、技术细节

该项目的主要目的是让用户记下自己的想法。即每个用户都有自己的笔记,因此应用程序需要具有帐户创建功能。这确保了每个用户的笔记都是私人的。

django 带有用户身份验证系统,因此它可能是一个不错的选择。你可以使用其他框架,如 bottle 和 flask,但你必须自己实现用户身份验证系统。

由于用户可能需要在不同情境下记录不同的笔记,因此实现用户的笔记分类功能将使应用程序更实用。

例如,你可能需要记录一些算法和数据结构,因此需要将不同的笔记划分到各自类别中。

你需要存储每个用户的信息和笔记,因此数据库成为该项目的重要组成部分。如果想使用 MySQL 数据库或用于 PostgreSQL 数据库的 psycopg2 模块,可以使用 MySQLdb 模块。还可以使用其他模块,但这完全取决于你选择使用的数据库。

2、额外挑战

用户忘记自己的想法是人之常情,甚至有时会忘记自己记了笔记。你可以添加一个功能,提醒用户他们记了笔记。此功能允许用户设置提醒时间,应用程序将通过电子邮件提醒用户。

5、测验

1、技术细节

这个项目的主要目标是设置测验并让人们作答。因此,用户应该能够设置问题,其他用户应该能够回答这些问题。然后,应用程序将显示最终得分和正确答案。

如果希望用户能够记录他们的分数,则需要实现帐户创建功能。

创建测试的用户应该能够通过上传文本文件来创建带有问题和答案的测试。文本文件应该能够转换成用户需要的格式,因此应用程序可以将文件转换为测验格式。

你还需要为此项目创建数据库。数据库将存储每个用户的问题、可能的答案、正确的答案和分数。

2、额外挑战

可以允许用户在测验中添加计时器。这样,测验的创建者可以确定用户在测验中的每个问题上花多长时间。

同时拥有测验分享功能也很棒,这样用户可以在其他平台上与朋友分享有趣的测验。

GUI 项目设计

6、MP3 播放器

1、技术细节

该项目的主要目标是允许用户播放 MP3 和数字音频文件。为了吸引用户,应用程序必须具有简单但美观的用户界面。

可以添加一个能列出可用 MP3 文件的界面。还可以为用户列出其他非 MP3 的数字音频文件。

用户还希望 MP3 播放器具有显示正在播放的文件信息的界面。其中可以包括文件名、长度、播放时长以及未播放时长(以分钟和秒为单位)。

Python 具有可以播放音频文件的库,如 pygame,使用几行代码即可处理多媒体文件。还可以查看 pymedia(https://pypi.org/project/PyMedia/)和 simpleaudio。

这些库可以处理大量的数字音频文件。包括 MP3 文件和其他格式的音频文件。

此外,这些库还有允许用户创建播放列表的功能。为此,需要一个数据库来存储创建的播放列表的信息。Python 的 sqlite3 模块允许使用 SQLite 数据库。

在这种情况下,SQLite 数据库是更好的选择,因为它是基于文件的,并且比其他 SQL 数据库更容易设置。虽然 SQLite 是基于文件的,但它能比常规文件更好地保存数据。

2、额外挑战

如果上面的都做到了,你还可以添加一项功能,以允许 MP3 播放器重复播放当前正在播放的文件,甚至可以实现随机播放。

还可以添加增加和降低音频文件播放速度的功能。用户会很喜欢这一功能,因为他们能够以比平时更慢或更快的速度播放音频文件。

7、闹铃提醒工具

1、技术细节

该项目的主要目标是在一天中的特定时间激活音频信号。因此,定时和音频信号播放是闹铃工具中最重要的部分。

闹铃工具应允许用户创建、编辑和删除闹铃。它还应该有一个能列出所有未被删除的闹铃界面。因此,它应列出活动闹铃和闲置闹铃。

由于它是一个闹铃,应用程序必须在规定的时间播放音频。用于播放音频的库有 pygame 库等。

在代码逻辑中,应用程序必须不断检查设置的闹铃时间。到达时间后,它会触发一个播放闹钟铃声的功能。

由于应用程序将检查设置的闹铃时间,这意味着应用程序必须将其保存在数据库中。数据库应存储闹铃日期、时间和音频等内容。

2、额外挑战

你也可以允许用户设置定期闹铃。用户能够设置在每周的某些日子、特定时间响铃。例如,可以在每个星期一下午 2:00 设置闹铃。

还可以添加暂停功能,以便用户可以暂停闹钟而不是解除闹钟。

8、文件管理器

1、技术细节

文件管理器项目的主要目标是为用户提供管理文件的界面。用户需要一个易上手又实用的文件管理器。

可以使用 PySimpleGUI 库创建具有一个功能强大的由小部件组成的用户界面,该界面也无需处理大量复杂工作。

用户应该能够完成一些简单的任务,如创建新目录或空文本文件。还应该能够复制和移动文件或目录。

sys、os 和 shutil 库对此项目非常有用,它们可用于在用户点击时对后台文件执行操作。

网格视图和列表视图是目前比较受欢迎的视图,因此你可以在应用程序中实现这两种视图。用户可以选择适合他们的视图选项。

2、额外挑战

要使文件管理器更高级,可以加入搜索功能。用户无需手动查找即可搜索文件和目录。

此外,还可以实现排序功能。用户根据不同的顺序对文件进行排序,例如时间、字母顺序或大小。

9、记账功能

1、技术细节

该项目的主要目标是跟踪用户的支出。为了向用户提供正确信息,并帮助他们优化支出,需要进行一些统计分析。

虽然跟踪费用是关键,但良好的界面也很重要。使用 PySimpleGUI,你可以创建一个独特的界面来改善用户体验。

诸如 pandas 和 matplotlib 之类的 PyData 库可以帮助设计记账工具。

pandas 库可用于数据分析,matplotlib 库可用于绘制图形。图表将为用户提供其支出的直观表示,并且可视化通常更容易理解。

应用程序将从用户那里获得数据,这里的数据是输入的支出。因此,费用需要存储在数据库中。SQLite 数据库是该项目的一个很好的选择,因为它可以快速设置。可以将 sqlite3 模块用于 SQLite 数据库。

2、额外挑战

为了让用户从这个项目中受益,他们需要在应用程序中定期输入自己的支出,但人们可能经常遗忘。所以添加一个提醒功能很有效。如此一来,应用程序就会在每天或每周的特定时间发送通知,提醒用户们使用记账工具。

命令行项目设计

10、通讯录

1、技术细节

该项目的主要目标是保存联系方式。设置可以让用户输入联系人详细信息的命令非常重要。可以使用 argparse 或 clickcommand-line 框架。它们简化了很多复杂的东西,所以你只需要关注执行命令时要运行的逻辑即可。

此外,还有一些功能需要实现,如删除联系人、更新联系人信息和列出已保存联系人。还可以允许用户使用不同顺序列出联系人,例如字母顺序或联系人创建日期。

它是一个命令行项目,用 SQLite 数据库就可以很好地保存联系人。SQLite 的设置非常友好。你可以将联系人详细信息保存在文件中,但文件不会具有 SQLite 的优势,例如更好的性能和安全性。

要在此项目中使用 SQLite 数据库,Python sqlite3 模块将非常有用。

2、额外挑战

还记得数据库是如何存储在用户的计算机上的吗?如果用户文件丢失了会怎么样?这意味着他们也会失去联系方式。

进一步的挑战是将数据库备份到在线存储平台。为此,可以按特定间隔将数据库文件上传到云。

还可以添加允许用户自己备份数据库的命令。这样,如果数据库文件丢失,用户仍然可以访问联系人。

应该注意,你可能需要某种形式的标识,这样通讯录就可以识别哪个数据库文件属于哪个用户。实现用户身份验证功能是实现此功能的一种方法。

11、网站连接检查

1、技术细节

该项目的主要目标是检查网站的状态。因此需要编写用于检查网站状态的代码。

你可以选择使用 TCPICMP 进行连接。socket 模块是用于检查的模块。还可以阅读 Python 指南中的 socket 编程。

无论是 docopt、click 还是 argparse 框架,都可以添加命令,从而允许用户在要检查的网站列表中添加和删除某网站。

用户还应该能够启动工具、停止工具并确定间隔。

由于必须保存要检查的文件列表,因此我们可以将其保存在文件(只是网站列表)中,也可以通过 sqlite3 模块使用 SQLite 数据库。

2、额外挑战

该应用程序也可以检查站点的连接状态,并将结果显示在命令行中。但这要求用户继续检查命令行。

也可以增加通知功能。通知功能可以在站点状态发生变化时,在后台通过声音提醒用户。你需要一个数据库来存储网站的先前状态。这是该工具可以判断状态何时发生变化的唯一方式。

12、批量文件重命名工具

1、技术细节

这个项目的主要目标是重命名文件。因此,应用程序需要找到一种操作目标文件的方法。os、sys 和 shutil 库对这个项目很有用。

你的用户将能够使用命名约定重命名目录中的所有文件。因此,他们应该能够自主制定命名约定。如果你了解正则表达式的工作原理,那么 regex 模块能辅助匹配所需的命名模式。

用户可能希望传递命名约定(例如 myfiles)作为命令的一部分,并期望该工具能重命名所有文件,如 myfilesXYZ,其中 XYZ 是数字。他们还应该能够选择要重命名的文件所在的目录。

2、额外挑战

该项目的主要挑战是重命名目录中的所有文件。但是用户可能只需要命名一定数量的文件。因此你可以实现一项功能,允许用户选择要重命名的文件数,而不是所有文件。

请注意,仅重命名一定数量的文件将需要该工具根据字母顺序、文件创建时间或文件大小对文件进行排序,具体取决于用户的要求。

13、目录树生成器

1、技术细节

目录树生成器的主要目标是可视化文件和目录之间的关系。os 库在列出目录和所选目录中的文件时非常有用。

诸如 docopt 或 argparse 之类的框架能简化很多内容,使你可以专注于为应用程序的逻辑编写代码。

在应用程序的逻辑中,你可以决定如何表示文件或目录。使用不同的颜色是一个很好的方法。你可以使用 colored 库以不同颜色打印文件和目录。

还应该可以设定目录树生成器的深度。例如,如果一个目录的子目录有 12 级,而你只需要用到第五级。

如果你愿意,还可以让用户自主决定目录树生成器的深度。

2、额外挑战

由于生成的目录树结果将出现在命令行上,因此可以更进一步,让生成器创建目录树的图像,即实现文本转图像的操作。

pillow (https://pillow.readthedocs.io/en/stable/) 库对此非常有用。

原文链接:

https://realpython.com/intermediate-python-project-ideas/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-10-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小詹学Python 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
实践是最好的老师:给中级 Python 开发人员的 13 个项目构想
学习 python 的基础知识是一种美妙的体验。但是,学习的喜悦可以被对实践项目的渴望所取代。想要建立项目是正常的,因此需要对项目的构想。
AI研习社
2019/09/04
1.1K0
【IOS开发进阶系列】iOS系统架构专题
        iOS的系统架构分为四个层次:核心操作系统层(CoreOS layer)、核心服务层(Core Services layer)、媒体层(Medialayer)和可触摸层(Cocoa Touch layer)。图1-1展示了Mac OS X和iOS系统架构层次的一个对比。
江中散人_Jun
2023/10/16
2K0
【IOS开发进阶系列】iOS系统架构专题
Android基础总结(1)
1、Android开发的特点 四大组件:活动(Activity)、服务(Service)、广播接收器(Broadcast Receiver)、内容提供器(Content Provider)。其中活动是所有Android应用程序的门面,方式在应用中看到的东西,都是放在活动中的。而服务就低调得多,你无法看到它,它会在后台默默地运行,即使用户退出了应用,服务仍然可以继续运行。广播接收器可以允许你的应用接收来自各处的广播消息,例如电话、短信等,当然,你的应用也可以自己向外发出广播消息。内容提供器则为应用程序之间共享
mukekeheart
2018/02/27
1.1K0
Android基础总结(1)
Python高阶项目(转发请告知)
编程中最常用的音频处理任务包括–加载和保存音频文件,将音频文件分割并追加到片段,使用不同的数据创建混合音频文件,操纵声音等级,应用一些过滤器以及生成音频调整和也许更多。
用户2966292
2021/02/23
4.6K0
Python高阶项目(转发请告知)
音乐NFT项目开发的性能优化
对于音乐 NFT 项目的开发,性能优化是一个关键环节,因为它直接影响用户体验,尤其是音乐播放、浏览和交易的流畅度。与通用的 Web3 项目相比,音乐 NFT 项目有其独特的性能挑战,主要是围绕音频文件的存储、传输和播放。
数字孪生开发者
2025/04/27
890
音乐NFT项目开发的性能优化
C++项目学习(机器人方向)
作为 C 语言家族演变的一部分,C++ 由著名的计算机科学家 Bjorne Stroustrop 设计。它被设计为 C 的跨平台改进,旨在为程序员提供更高程度的内存和系统资源命令。
zhangrelay
2022/08/10
7940
AI听力测试APP的开发流程
开发一款AI听力测试APP是一个涉及音频处理、人工智能、用户界面设计等多方面技术的复杂过程。以下是一个详细的开发流程,涵盖了从需求分析到上线维护的各个阶段。
数字孪生开发者
2024/12/18
1760
AI听力测试APP的开发流程
程序员开发者神器:10个.Net开源项目
该项目是一个基于C#开发、开源的文件管理器,适用于Windows,界面UI美观、方便轻松浏览文件。此外,支持创建和提取压缩文件,使文件压缩和解压缩变得轻而易举。
郑子铭
2023/09/19
7200
程序员开发者神器:10个.Net开源项目
Mp3tag Mac(音频标签编辑器)1.6.0
Mp3tag是一个功能强大且易于使用的编辑音频文件元数据的工具,其主要目标是使简单任务变得容易,使复杂任务成为可能,并支持多种音频格式,它为不同的受支持文件类型提供了一个通用接口,从而为混合类型的音乐库提供了通用的工作流程。
Mac小小
2022/08/26
4590
多媒体开发
纵观移动市场上的手机,特别是智能手机,大家一定会发现现在的手机已经不仅仅限接听电话、收发短信、浏览网页之类的简单功能了。手机已经发展成一个集照相机、音乐播放器、视频播放器、网页浏览器等功能于一体的智能设备。因此为手机提供音、视频的录制、播放以及照相等功能已经成为软件开发中必不可少的内容。Android原生提供了对MP3、WAV 、MP4和3GP等音频、视频格式支持的组件API,通过这些API和组件我们可以非常容易地实现强大的音频和视频功能。在本章节中我们就结合具体的案例针对Android中的多媒体开发相关的内容进行深入讲解,这部分内容包括音乐的播放、音效的播放、视频的播放、音频的录制以及拍照等功能的实现。
张哥编程
2024/12/17
2740
多媒体开发
《HelloGitHub》第 95 期
这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等,涵盖多种编程语言 Python、Java、Go、C/C++、Swift...让你在短时间内感受到开源的魅力,对编程产生兴趣!
HelloGitHub
2024/02/29
3100
《HelloGitHub》第 95 期
Audirvana for Mac(无损音乐播放器)
Audirvana 是适用于 macOS 和 Windows 的流行高端音乐播放器软件。它旨在通过提供一系列功能(例如比特完美播放、高级上采样、元数据管理以及与 Tidal 和 Qobuz 流媒体服务的集成)为发烧友提供优质的聆听体验。Audirvana 支持多种音频格式,包括 FLAC、ALAC、DSD 和 MQA,并且可以播放到各种类型的数模转换器 (DAC)。此外,Audirvana 提供了一个直观的用户界面,允许用户轻松浏览和组织他们的音乐库、创建播放列表和控制播放。
用户10121095
2023/03/14
1.6K0
iOS开发之多媒体API (转载)
视频格式可以分为适合本地播放的本地影像视频和适合在网络中播放的网络流媒体影像视频两大类。尽管后者在播放的稳定性和播放画面质量上可能没有前者 优秀,但网络流媒体影像视频的广泛传播性使之正被广泛应用于视频点播、网络演示、远程教育、网络视频广告等等互联网信息服务领域。
tandaxia
2018/09/27
1.3K0
iOS开发之多媒体API (转载)
在 Python 中播放声音
我们首先检查playsound库,它为在Python中播放声音文件提供了一个简单直接的解决方案。凭借其最低的设置要求,开发人员可以使用单个函数调用将音频播放快速集成到他们的应用程序中。但是,对于更高级的音频功能,我们深入研究了两个流行的库:pygame和pyglet。Pygame是一个强大的多媒体库,以其处理音频,图形和用户输入的能力而闻名。
很酷的站长
2023/08/11
1.1K0
在 Python 中播放声音
Mac无损音乐播放器:Audirvana
Audirvana是一款强大好用的Mac无损音乐播放器,直接连结到系统的音效输出,故在设定上也与Mac OS X的系统环境设定彻底分家,纵使播放的是普通MP3,音质上也有所提升。同时亦由于Audirvana直接连结到系统的音效输出,其他系统音效将会没有声 音。取样率(Sample Rate)会自动调整,并从记忆体取得播放内容,因此可以把来自处理器和硬碟的影响减至最低。播放时支援Playlist,也可使用Apple IR进行遥控。
啾咪啾咪
2022/09/17
4.3K0
为什么Red Hat必须改进边缘开发者体验
盐湖城——Red Hat 已经认识到增强开发者体验的重要性,因为它在 OpenShift 和 RHEL 的多个方面取得进展。值得注意的是,在最近的 KubeCon+CloudNativeCon 系列发布会上,该公司推出了新版本的 Red Hat Device Edge。
云云众生s
2024/11/27
980
为什么Red Hat必须改进边缘开发者体验
USF MSDS501 计算数据科学中
本实验的目标是让您感到惊讶,您可以使用 Python 处理一些音频文件。您将无法获得所有详细信息,但您可以剪切并粘贴此实验来启动 Python 会话。作为次要目标,您将习惯于安装 Python 包和命令行工具。
py3study
2020/01/03
1.4K0
推荐10个不错的React开源项目
Kutt是一个现代的URL缩短器,支持自定义域,可以用来缩短网址、管理链接并查看点击率统计信息。Kutt支持自定义域名,设置链接密码和描述,缩短URL的私人统计信息,查看、编辑、删除和管理链接,RESTful API等。
xiangzhihong
2022/11/28
14.7K0
推荐10个不错的React开源项目
【安全的办公和生产力应用程序】上海道宁为您提供用于安全编辑和协作的软件——ONLYOFFICE
Ascensio System SIA是一家国际性的开源公司,总部位于拉脱维亚首都里加,员工遍布30多个国家/地区,在伦敦和达拉斯也设有办事处。
51Component
2022/07/05
3.1K0
【安全的办公和生产力应用程序】上海道宁为您提供用于安全编辑和协作的软件——ONLYOFFICE
Navi.Soft31.WebMVC框架(含示例地址)
1概述 1.1应用场景 互联网高速发展,互联网软件也随之越来越多,Web程序越来越被广泛使用.它部署简单,维护方便,深得众多软件公司使用 Bootstrap前端框架,是最近非常流行的框架之一.它简洁,直观,强悍,移动设备优先的原则,让Web开发更迅速和简单 本产品使用微软推荐的MVC开发模式,加上Bootstrap前端组件,开发出一套数据库管理应用类软件的基础框架.包括:系统选项,功能模块,权限配置等.开发者可以快速上手,从而将更多的精力放在业务逻辑 1.2面向对象 Net程序开发员 1.3开发环境
用户1219352
2018/02/01
1.2K0
Navi.Soft31.WebMVC框架(含示例地址)
相关推荐
实践是最好的老师:给中级 Python 开发人员的 13 个项目构想
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档