使用体验神似VS Code? 三步带你了解华为云CloudIDE前世今生
优质文章,第一时间送达!
学习 Python 的基础知识是一种美妙的体验。但对于中级 Python 开发人员来说,很多项目要么过难,要么过易。本文将列出十三个适合中级 Python 开发人员练手的项目。
原文链接:https://realpython.com/intermediate-p~ P 0 I 1 f * 6ython-project-ideas/
本文仅做分享. : N Y A,若有侵权,请联系小编第一时间删文
Web 项目设计
内容聚合器(Content Aggregator)
1. 技术细节
该项目设计的主要目标是聚合内容。首先,我们需要知道内容聚合器从哪些站点获取C l P I内容。然后,使用请求库来发送 HTTP 请求,并使用 BeautifulSoup 解析和抓取站点的必要内容。
该应 q ` , i Z E用程序可以将其内容聚合作& 0 P j s x为后台进程进行实现。celery 或 apscheduler 等库可以提供帮助。建议尝试 apscheduler。它非常适用于小型后台进程。
从各个站点抓取的内容需要进行保存。因此,需要使用数据库。
2. 额外挑战
对于更严峻的挑战,可以通过以下网站w $ . X ) 3进行学习并获得更多信息:https://L a 4 ! Drealpython.coj V Q /m/python-webb C - # ? % `-scraping-practical-introduction/
还可以在网站上订阅内容聚合文章。每天结束时,内容聚合器会将当天的文章发送到用户的z H m 1 y o _ G 7电子邮箱。
正则F T S i j表达式查询工具
1. 技术细节
这类项a p S 6 , s E目的主要目的是判别用户输入的查询字符串的有效性。可以让它给出有效和无效的判别,例如「查询字符串有效」和「查询字符串无效」,以绿色显示有效,以红色显示无效。
不必从头开始构造查询工具。使用 Python 的标准 relibrary,就可以. 5 R对输入的文本运行查询字符串。当查询字符串不匹配9 8 z时,re 库将返回 None,当匹配时,将返回匹配的字符串。
有些用户可能无法完全理解$ 8 O U正则| 7 K ` o F表达式,因此读者可以自己创建一个页面来解释正则表达式的工作原理。写一个足够有E : ) R趣的文档,让用户对学习和理解正则表达式产生兴趣。
2. 额外挑战
制作一个只返回正则表达式有效性的项目很好。但也可以添加替换功能。这意味着应用程序将检查正则表达式的有效性,并允许用户用其他内容替换匹配的字符串。因此,该工具不再只是查询工具,也成为了替换工具。
网址缩短(URL Shortener)
1. 技术细节
该项目设计的主要目标是缩短 URL。应q W #用程序在缩短 URL 后,再访问缩短的 URj | / i 1 HL 时将用户重定向到原始E o Q 9 URL。
在应用程序中,用户将输入原始 URL,~ d % ^ / z最后获得新的缩短 URL。为此,可以使用 random 和 string 模块的组合来生成缩# @ M k r 3短版 URL 的字符。
由于用户将在几天、几个月甚至几年后访问缩短的 URL,因此需要B z ~ Q a % S %将原始 URL 和缩短的 URL 保存在数据库中。当出现请求时,应用程序会检查 URL 是否存在并重定向到原始 URL,否则会重定向到 404 页面。
2. 额外挑战
使用随机字符生成缩短 URL 比长且随机字符的 URL 更好。通过添加功能来自定义 URL,用户就可以自定义生成的 URL。
毫无疑问,自定义 xyz.com/mysite URL 比随机生成的 xyz.com/piojwr URL 更好。
便利贴功能
1. 技术细节
该项目的主要目的是让用户记下自x m 6 S A己的想法。即每个用户都有自己的笔记,因此应用程序需要具& % ; = ) _ Z ; t有帐户创建功能。这确保了每个用户的笔记都是私q z q 7 | G人的。
django 带有用户身份验证系统,因此它可能是一个不错的选择。你可以使用其1 f n O Z : e M &他框架,如 bottle 和 flask,但你必须自己实现用户身份验证系统。
由于用户可能需要在不同情境下记录不同的笔记,因此实现用户的笔记分类功能将使应用程序S 5 { . { M c 1更实用。
例如,你可能需要记录一些算法和数据结构,因此需要将不同的} C 笔记划分到各自类别中。
你需要存储每个用户的信息和笔记,因此数据库成为该项目的重要组成部分。如果想使用 MySQL 数据库或用于 PostgreSQL 数据库的 psycopg2 模块,可以使用 MySQLdb 模块| . M ~ P A `。还可以使用其他模块,但这完全取决于你选择} f V 2 C {使用的数据库。
2. 额外挑战
用户忘记自N H /己的想法是人之常情,甚至有时会忘记自己记了笔记。你可以添加一个功能,提醒用户他们记了笔记。此功能允许用户设置提醒时间,应用程序将通过电子邮i ~ h k c件提醒用户。
测验
1. 技术细节
这个项目的主要目标是设置测验并让人们作答。因此,用户应该能够设置问* W V 8 _ y ] u题,其他用户应该能够K k & & u R回答0 6 S e E & k {这些问题。然后,应用程序将显示最终得分和正确答案。
如果希望用户能够记录他们的分数,则需要实现帐户创建功能。
创建测试的用户应该e 8 d 2 u l 5能够通过上传文本文件来创建带有问题和答案的测试。, . M J F o文本文件应该能够转换成用户需要的格式,因此应用程序可以将文件转换为测验格式。
你还需要为此项目创建数k 3 Z : & - Q {据库。数据库将存储每Z X l个用户的问题、可能的答案、正确的答案和分数。
2. 额外挑战
可以允许用户在测验中添加计时器。这样,测验的创建者可以确定用户在测验中的每个问题上花多长时间。c R P n ] Q
同时拥有测验分享功能也很棒,这样用户可以在其他平台上与朋友分享有趣的测验。
GUI 项目设计
MP3 播放器
1. 技术细节
该: ` w o J a K { w F分。
闹铃工具应允许用户创建、编辑和删除闹铃。它还应该有一个能列出所有未被删除的闹铃界面。因此,它应列出活动闹铃和闲置闹铃。
由于它是一个闹铃,应用程序必须在规定的时间播放音频。用} y 7 g H t Y于播放音频的库有 pygame 库等。
在7 C p % z C代码逻辑中,应用程序必须不断检查设置的闹铃时间。到达时间后,它会触发一个播放闹钟铃声的功能l L T M X + p S ~。
由于应用程序将检查设置的闹铃时间,这意味着应用程序必须将其保存在数据库中。数据库应存储闹铃日i 1 / 4 h V期、时间和音频等内容。
2. 额外挑战
你也可以允许用户设置定期闹铃。用户能够设置在每周的某些日子、特定时间响铃。例如,可以在每个星? 4 J T -期一下午 2:00 设置闹铃。
还可以添_ r @加暂停功能,以便用户可以暂停闹钟而不是解除闹钟。9 J F W z | H U z
文件管理器
1. 技术细节
文件管理器项) e e o ] H目的主要p r | z T + 0 u善用户体验。
诸如 pandas 和 matplotlib 之类的 PyData 库可以帮助7 ( o - a设计记账工具。
pandas 库可用于数据分析,maW 5 N g j h = k Ktplh # | + A hotlib 库可用于绘制图形。图表将为用户提供其支出的直观表示,并且可视化通常更容易理解。
应用程序将从用户那里获得数据。P a U v v a这里的数据是输入的支出。因此o ` 4 7,费用需要存储在数据库中。SQLite 数据库是该项目的一个很好的选择,因为它可以快速设置。可以K C V *将 sqlite3 模块用于 SQLE + G @ite 数据库。
2. 额外挑战
为了让用户从这个项目中受益,他们需要在应用程序中定期输入自己的支出,但人们可能经常遗忘。所以添加一个提醒功能很有效。如此一来,应用程序就会在每天或每周的特定时间发送通知,提醒用户们使用记账工具。
命令行项目设计
通讯录
1. 技术细节
该项目的主要目标是保存联系方式。设置可以让用户输入联系人详细信息的命令非常重要。可以使用 argparse 或 clickcommV s O : f yand-line 框架。它们简化了很多复A . W杂的东西,所以你只需要关注执行命令时要运行的逻辑即可。
此外^ w `,还有一些功能需要实现,如删除联系人、更新联系人信息和列出已保存联系人。还可以允许用户使用不同顺序列出联系人,例如字母顺序或联系人创建日期。
它是J U x R一个命令行项目,用 SQLite 数据库就可以很好地保存联系人。SQLite 的设置非常友好。你可以将联系人详细信息保存在文件中,但文件不会具有 SQLite 的优势,例如更好的性能和安全性。
要在| P _ k l 0 9 ; r此项J 8 m目中使用 SQLite 数据库,Python sqlite3 模块将非常有用3 H w @。
2. 额外挑战
还记得数据库是如何存储在用户的计算机上的吗?如果用户文件丢失了会怎么样?这意味着他们也会失去联系方式。
进一步的挑战是将数据库备W * v份到在线存储平台。为此,可以按特定间隔将数据库文件上传到云。
还可以添加允许用b M C 3 h户自己备份数据库的命令。这样,^ x ? Q B * l R }如果数据库文件丢失,用户仍然可以访问联系人。
应1 V o )该注意,你可能需要某种形式的标识| , c g H H a A +,这样通讯录就可以识别哪个数据库文件属于哪个用户。实现用户身份验证功能是实现此功能的一种i g Z ! W |方法。
网站连接检查
1. 技术细节
该项目的主要目标是检查网站的状态。因此需要编写用于检查网站状态的代码。
你可以选择使用 TCP 或 ICMP 进行连接。socket 模块是用于检查a N t 0 !的模块。B ; R [还可以阅读 Python 指南中的 socket 编程。
无论是 docopt、click 还是 argparse 框架,都可以添加命令,从而允许用户在O L A U要检查的网站列表中添加和删除某网站。
用户还应该能够启动工具、停止工具并确定间隔。
由于必须保存要检查的文件T / 列表,因此我们可以将其保存在文件(只是网站列表)中,也可以通过 sqlite3 模块使用 SQLite 数据库。
2. 额外挑战
该应用程序也可以检查站点的连接状态,并将结果显示在命令行中。但这要求用户继续检查命令行。
也可以增加通知功能。通知功能可以在站点状态发生变K R Z ) : o ` F E化时,在后台通过声音提醒用户。你需要一个数据库来存储网站的先前状态。这是该工具可以判断状态何时发生变化的唯一方式。
批量文件重命名工具
1. 技术细节
这个项目的主要目标Z D P J是重命名文件。因此I Y `,应用程序需要找到一种操作目标文件的方法。os、sys 8 g + v A z d @ 和 shutil 库对这个项目很有用。
你的用户将能够使用命名约定重命名目录中的所有文件。因此,他们应该能够自主制定命名L V 2 =约定。如果你了解正则表达式的工作原理,那么 regex 模块能辅助/ M Z匹配所需的命名模式。
用户可能希望传递命名约定(例如 myfiles)作为命令的一部分,并期望该工具能重命名所有文件,如 myfilesXYZ,其中 XYZ 是数字。O . ` G他们还应该能够选择要重命名的文件所在的目录。
2. 额外挑战
该项目的主要挑战是重命名目录中的所有文件。但是用户可能只需要命名一定数量的文件。因此你可以实现一项功能,允许用户选择要重命名的文件数,而不是所有] F y n f V W z文件。
请注意,仅重命名一定数量的文件将需要该工具根据字母顺序、文件创建时间或文件大小对文件进行排序,具体取决于用户的_ ` S * } I 之类的框架能简化很多内容,使你可以G s ? B k 5 h ;专注于为应用程序的逻辑编写代码。
在应用程序的逻辑中,你可以决定如何表示文件或目录。使用不同的颜色是一个很好的方法。你可以使用 colY v 0 ~ored 库以不同颜a 6 $ _ k f O N R色打印文件和目录。
还应该可以设定目录树生成器的深度。例如,如果一个目录的子目录有 12 级,- o .而你只需要用到第五级。
如果你愿a 9 ^ r , w意,还可以让用户r + # K自主决定目录树生成器的深度。
2. 额外挑战K 5 i O e z # 3
由于生成的目录树结果将出现在命令行上,因此可以更进一步,让生成器创建目录树 y C N ] H R q s的图像,即实现文本转图像的操作。
pillow (https://pillo% w L : s : Cw.readthedocs.J Y r k b gio/en/stable/) 库对此非常有用P e } l ! F : k t。2 X j I X s
好文章,我在看❤️