学习 Python 的基础知识是一种美妙的体验。但对于中级 Python 开发人员来讲,不少项目要么过难,要么过易。本文将列出十三个适合中级 Python 开发人员练手的项目。
内容聚合器(Content Aggregator)
该项目设计的主要目标是聚合内容。首先,咱们须要知道内容聚合器从哪些站点获取内容。而后,使用请求库来发送 HTTP 请求,并使用 BeautifulSoup 解析和抓取站点的必要内容。
该应用程序能够将其内容聚合做为后台进程进行实现。celery 或 apscheduler 等库能够提供帮助。建议尝试 apscheduler。它很是适用于小型后台进程。
从各个站点抓取的内容须要进行保存。所以,须要使用数据库。2. 额外挑战
对于更严峻的挑战,能够经过如下网站进行学习并得到更多信息:https://realpython.com/python-web-scraping-practical-introduction/
还能够在网站上订阅内容聚合文章。天天结束时,内容聚合器会将当天的文章发送到用户的电子邮箱。
这类项目的主要目的是判别用户输入的查询字符串的有效性。可让它给出有效和无效的判别,例如「查询字符串有效」和「查询字符串无效」,以绿色显示有效,以红色显示无效。
没必要从头开始构造查询工具。使用 Python 的标准 relibrary,就能够对输入的文本运行查询字符串。当查询字符串不匹配时,re 库将返回 None,当匹配时,将返回匹配的字符串。
有些用户可能没法彻底理解正则表达式,所以读者能够本身建立一个页面来解释正则表达式的工做原理。写一个足够有趣的文档,让用户对学习和理解正则表达式产生兴趣。
制做一个只返回正则表达式有效性的项目很好。但也能够添加替换功能。这意味着应用程序将检查正则表达式的有效性,并容许用户用其余内容替换匹配的字符串。所以,该工具再也不只是查询工具,也成为了替换工具。
该项目设计的主要目标是缩短 URL。应用程序在缩短 URL 后,再访问缩短的 URL 时将用户重定向到原始 URL。
在应用程序中,用户将输入原始 URL,最后得到新的缩短 URL。为此,可使用 random 和 string 模块的组合来生成缩短版 URL 的字符。
因为用户将在几天、几个月甚至几年后访问缩短的 URL,所以须要将原始 URL 和缩短的 URL 保存在数据库中。当出现请求时,应用程序会检查 URL 是否存在并重定向到原始 URL,不然会重定向到 404 页面。
使用随机字符生成缩短 URL 比长且随机字符的 URL 更好。经过添加功能来自定义 URL,用户就能够自定义生成的 URL。
毫无疑问,自定义 xyz.com/mysite URL 比随机生成的 xyz.com/piojwr URL 更好。
该项目的主要目的是让用户记下本身的想法。即每一个用户都有本身的笔记,所以应用程序须要具备账户建立功能。这确保了每一个用户的笔记都是私人的。
django 带有用户身份验证系统,所以它多是一个不错的选择。你可使用其余框架,如 bottle 和 flask,但你必须本身实现用户身份验证系统。
因为用户可能须要在不一样情境下记录不一样的笔记,所以实现用户的笔记分类功能将使应用程序更实用。
例如,你可能须要记录一些算法和数据结构,所以须要将不一样的笔记划分到各自类别中。
你须要存储每一个用户的信息和笔记,所以数据库成为该项目的重要组成部分。若是想使用 MySQL 数据库或用于 PostgreSQL 数据库的 psycopg2 模块,可使用 MySQLdb 模块。还可使用其余模块,但这彻底取决于你选择使用的数据库。
用户忘记本身的想法是人之常情,甚至有时会忘记本身记了笔记。你能够添加一个功能,提醒用户他们记了笔记。此功能容许用户设置提醒时间,应用程序将经过电子邮件提醒用户。
这个项目的主要目标是设置测验并让人们做答。所以,用户应该可以设置问题,其余用户应该可以回答这些问题。而后,应用程序将显示最终得分和正确答案。
若是但愿用户可以记录他们的分数,则须要实现账户建立功能。
建立测试的用户应该可以经过上传文本文件来建立带有问题和答案的测试。文本文件应该可以转换成用户须要的格式,所以应用程序能够将文件转换为测验格式。
你还须要为此项目建立数据库。数据库将存储每一个用户的问题、可能的答案、正确的答案和分数。
能够容许用户在测验中添加计时器。这样,测验的建立者能够肯定用户在测验中的每一个问题上花多长时间。
同时拥有测验分享功能也很棒,这样用户能够在其余平台上与朋友分享有趣的测验。GUI 项目设计
该项目的主要目标是容许用户播放 MP3 和数字音频文件。为了吸引用户,应用程序必须具备简单但美观的用户界面。
能够添加一个能列出可用 MP3 文件的界面。还能够为用户列出其余非 MP3 的数字音频文件。
用户还但愿 MP3 播放器具备显示正在播放的文件信息的界面。其中能够包括文件名、长度、播放时长以及未播放时长(以分钟和秒为单位)。
Python 具备能够播放音频文件的库,如 pygame,使用几行代码便可处理多媒体文件。还能够查看 pymedia(https://pypi.org/project/PyMedia/)和 simpleaudio。
这些库能够处理大量的数字音频文件。包括 MP3 文件和其余格式的音频文件。
此外,这些库还有容许用户建立播放列表的功能。为此,须要一个数据库来存储建立的播放列表的信息。Python 的 sqlite3 模块容许使用 SQLite 数据库。
在这种状况下,SQLite 数据库是更好的选择,由于它是基于文件的,而且比其余 SQL 数据库更容易设置。虽然 SQLite 是基于文件的,但它能比常规文件更好地保存数据。
若是上面的都作到了,你还能够添加一项功能,以容许 MP3 播放器重复播放当前正在播放的文件,甚至能够实现随机播放。
还能够添加增长和下降音频文件播放速度的功能。用户会很喜欢这一功能,由于他们可以以比平时更慢或更快的速度播放音频文件。
该项目的主要目标是在一天中的特定时间激活音频信号。所以,定时和音频信号播放是闹铃工具中最重要的部分。
闹铃工具应容许用户建立、编辑和删除闹铃。它还应该有一个能列出全部未被删除的闹铃界面。所以,它应列出活动闹铃和闲置闹铃。
因为它是一个闹铃,应用程序必须在规定的时间播放音频。用于播放音频的库有 pygame 库等。
在代码逻辑中,应用程序必须不断检查设置的闹铃时间。到达时间后,它会触发一个播放闹钟铃声的功能。
因为应用程序将检查设置的闹铃时间,这意味着应用程序必须将其保存在数据库中。数据库应存储闹铃日期、时间和音频等内容。
你也能够容许用户设置按期闹铃。用户可以设置在每周的某些日子、特定时间响铃。例如,能够在每一个星期一下午 2:00 设置闹铃。
还能够添加暂停功能,以便用户能够暂停闹钟而不是解除闹钟。
文件管理器项目的主要目标是为用户提供管理文件的界面。用户须要一个易上手又实用的文件管理器。
可使用 PySimpleGUI 库建立具备一个功能强大的由小部件组成的用户界面,该界面也无需处理大量复杂工做。
用户应该可以完成一些简单的任务,如建立新目录或空文本文件。还应该可以复制和移动文件或目录。
sys、os 和 shutil 库对此项目很是有用,它们可用于在用户点击时对后台文件执行操做。
网格视图和列表视图是目前比较受欢迎的视图,所以你能够在应用程序中实现这两种视图。用户能够选择适合他们的视图选项。
要使文件管理器更高级,能够加入搜索功能。用户无需手动查找便可搜索文件和目录。
此外,还能够实现排序功能。用户根据不一样的顺序对文件进行排序,例如时间、字母顺序或大小。
该项目的主要目标是跟踪用户的支出。为了向用户提供正确信息,并帮助他们优化支出,须要进行一些统计分析。
虽然跟踪费用是关键,但良好的界面也很重要。使用 PySimpleGUI,你能够建立一个独特的界面来改善用户体验。
诸如 pandas 和 matplotlib 之类的 PyData 库能够帮助设计记帐工具。
pandas 库可用于数据分析,matplotlib 库可用于绘制图形。图表将为用户提供其支出的直观表示,而且可视化一般更容易理解。
应用程序将从用户那里得到数据。这里的数据是输入的支出。所以,费用须要存储在数据库中。SQLite 数据库是该项目的一个很好的选择,由于它能够快速设置。能够将 sqlite3 模块用于 SQLite 数据库。
为了让用户从这个项目中受益,他们须要在应用程序中按期输入本身的支出,但人们可能常常遗忘。因此添加一个提醒功能颇有效。如此一来,应用程序就会在天天或每周的特定时间发送通知,提醒用户们使用记帐工具。
该项目的主要目标是保存联系方式。设置可让用户输入联系人详细信息的命令很是重要。可使用 argparse 或 clickcommand-line 框架。它们简化了不少复杂的东西,因此你只须要关注执行命令时要运行的逻辑便可。
此外,还有一些功能须要实现,如删除联系人、更新联系人信息和列出已保存联系人。还能够容许用户使用不一样顺序列出联系人,例如字母顺序或联系人建立日期。
它是一个命令行项目,用 SQLite 数据库就能够很好地保存联系人。SQLite 的设置很是友好。你能够将联系人详细信息保存在文件中,但文件不会具备 SQLite 的优点,例如更好的性能和安全性。
要在此项目中使用 SQLite 数据库,Python sqlite3 模块将很是有用。
还记得数据库是如何存储在用户的计算机上的吗?若是用户文件丢失了会怎么样?这意味着他们也会失去联系方式。
进一步的挑战是将数据库备份到在线存储平台。为此,能够按特定间隔将数据库文件上传到云。还能够添加容许用户本身备份数据库的命令。这样,若是数据库文件丢失,用户仍然能够访问联系人。
应该注意,你可能须要某种形式的标识,这样通信录就能够识别哪一个数据库文件属于哪一个用户。实现用户身份验证功能是实现此功能的一种方法。
该项目的主要目标是检查网站的状态。所以须要编写用于检查网站状态的代码。
你能够选择使用 TCP 或 ICMP 进行链接。socket 模块是用于检查的模块。还能够阅读 Python 指南中的 socket 编程。
不管是 docopt、click 仍是 argparse 框架,均可以添加命令,从而容许用户在要检查的网站列表中添加和删除某网站。
因为必须保存要检查的文件列表,所以咱们能够将其保存在文件(只是网站列表)中,也能够经过 sqlite3 模块使用 SQLite 数据库。
该应用程序也能够检查站点的链接状态,并将结果显示在命令行中。但这要求用户继续检查命令行。
也能够增长通知功能。通知功能能够在站点状态发生变化时,在后台经过声音提醒用户。你须要一个数据库来存储网站的先前状态。这是该工具能够判断状态什么时候发生变化的惟一方式。
这个项目的主要目标是重命名文件。所以,应用程序须要找到一种操做目标文件的方法。os、sys 和 shutil 库对这个项目颇有用。
你的用户将可以使用命名约定重命名目录中的全部文件。所以,他们应该可以自主制定命名约定。若是你了解正则表达式的工做原理,那么 regex 模块能辅助匹配所需的命名模式。
用户可能但愿传递命名约定(例如 myfiles)做为命令的一部分,并指望该工具能重命名全部文件,如 myfilesXYZ,其中 XYZ 是数字。他们还应该可以选择要重命名的文件所在的目录。
该项目的主要挑战是重命名目录中的全部文件。可是用户可能只须要命名必定数量的文件。所以你能够实现一项功能,容许用户选择要重命名的文件数,而不是全部文件。
请注意,仅重命名必定数量的文件将须要该工具根据字母顺序、文件建立时间或文件大小对文件进行排序,具体取决于用户的要求。
目录树生成器的主要目标是可视化文件和目录之间的关系。os 库在列出目录和所选目录中的文件时很是有用。
诸如 docopt 或 argparse 之类的框架能简化不少内容,使你能够专一于为应用程序的逻辑编写代码。
在应用程序的逻辑中,你能够决定如何表示文件或目录。使用不一样的颜色是一个很好的方法。你可使用 colored 库以不一样颜色打印文件和目录。
还应该能够设定目录树生成器的深度。例如,若是一个目录的子目录有 12 级,而你只须要用到第五级。
若是你愿意,还可让用户自主决定目录树生成器的深度。
因为生成的目录树结果将出如今命令行上,所以能够更进一步,让生成器建立目录树的图像,即实现文本转图像的操做。
pillow (https://pillow.readthedocs.io/en/stable/) 库对此很是有用。原文连接:https://realpython.com/intermediate-python-project-ideas/
往期福利关注飞马会公众号,回复对应关键词打包下载学习资料;回复“入群”,加入飞马网AI、大数据、项目经理学习群,和优秀的人一块儿成长!