面向中級(jí) Python 開(kāi)發(fā)人員的 13 個(gè)項(xiàng)目構(gòu)想
本文轉(zhuǎn)自雷鋒網(wǎng),如需轉(zhuǎn)載請(qǐng)至雷鋒網(wǎng)官網(wǎng)申請(qǐng)授權(quán)。
學(xué)習(xí) python 的基礎(chǔ)知識(shí)是一種美妙的體驗(yàn)。但是,學(xué)習(xí)的喜悅可以被對(duì)實(shí)踐項(xiàng)目的渴望所取代。想要建立項(xiàng)目是正常的,因此需要對(duì)項(xiàng)目的構(gòu)想。
但問(wèn)題是,有些項(xiàng)目對(duì)于中級(jí)的 Python 開(kāi)發(fā)人員來(lái)說(shuō)過(guò)于簡(jiǎn)單,或者過(guò)于困難。為此,工程師 Habeeb Shopeju 寫(xiě)了一篇文章,文中給出了適合中級(jí) Python 開(kāi)發(fā)人員 13 個(gè)項(xiàng)目構(gòu)想,或許會(huì)對(duì)你有所幫助。
目錄
構(gòu)建項(xiàng)目的重要性
選擇項(xiàng)目平臺(tái)
-
網(wǎng)頁(yè)
-
桌面圖形用戶(hù)界面
-
命令行
Web 項(xiàng)目想法
-
內(nèi)容聚合器
-
Regex 查詢(xún)工具
-
縮短網(wǎng)址
-
便利貼
-
測(cè)驗(yàn)申請(qǐng)
圖形用戶(hù)界面項(xiàng)目理念
-
MP3 播放器
-
報(bào)警工具
-
文件管理器
-
費(fèi)用追蹤器
命令行項(xiàng)目思想
-
聯(lián)系人簿
-
站點(diǎn)連接檢查器
-
批量文件重命名工具
-
目錄樹(shù)生成器
項(xiàng)目工作建議
結(jié)論
在本文中,你將了解到:
-
構(gòu)建項(xiàng)目的重要性
-
你可以構(gòu)建項(xiàng)目的主要平臺(tái)
-
13 個(gè)你可以使用的項(xiàng)目構(gòu)想
-
關(guān)于項(xiàng)目工作的一些小建議
構(gòu)建項(xiàng)目的重要性
項(xiàng)目工作對(duì)于推動(dòng)你作為 Python 開(kāi)發(fā)人員的職業(yè)生涯來(lái)說(shuō)至關(guān)重要,它讓你有機(jī)會(huì)運(yùn)用你所獲得的技能和知識(shí)。
項(xiàng)目可以幫助你:
-
建立信心:無(wú)論項(xiàng)目的復(fù)雜程度如何,你都會(huì)更加相信自己創(chuàng)建軟件的能力。
-
探索其他技術(shù):你將了解構(gòu)建完整產(chǎn)品所需的其他技術(shù),如數(shù)據(jù)庫(kù)、服務(wù)器和其他語(yǔ)言。
-
更好地理解編程概念:你將學(xué)習(xí)更好地編寫(xiě)代碼,并了解設(shè)計(jì)模式和面向?qū)ο缶幊痰雀拍睢?/p>
-
體驗(yàn)一個(gè)完整的軟件開(kāi)發(fā)生命周期:在編寫(xiě)代碼、管理編碼過(guò)程和更新軟件之前,你將學(xué)會(huì)如何計(jì)劃。
作為一個(gè) Python 開(kāi)發(fā)人員,從構(gòu)建項(xiàng)目中可以獲得很多好處。
選擇項(xiàng)目平臺(tái)
你需要構(gòu)建在平臺(tái)上運(yùn)行的軟件,以便缺乏特定技術(shù)知識(shí)的人可以使用你的軟件。Web、桌面和命令行是可以構(gòu)建項(xiàng)目的三個(gè)主要平臺(tái)。
Web
Web 應(yīng)用程序是在 Web 上運(yùn)行的應(yīng)用程序,只要可以訪(fǎng)問(wèn) Internet,就可以在任何設(shè)備上訪(fǎng)問(wèn)它們,而無(wú)需下載。如果你希望所有具有 Internet 訪(fǎng)問(wèn)權(quán)限的人都能訪(fǎng)問(wèn)你的項(xiàng)目,那么這個(gè)項(xiàng)目必須是一個(gè) Web 應(yīng)用程序。
Web 應(yīng)用程序有后端和前端。后端是業(yè)務(wù)邏輯所在的部分:后端代碼將操作和存儲(chǔ)數(shù)據(jù)。前端是應(yīng)用程序的接口:前端代碼將決定 Web 應(yīng)用程序的外觀。
作為一個(gè)中級(jí)的 Python 開(kāi)發(fā)人員,你的主要關(guān)注點(diǎn)是后端代碼。但是,前端代碼也很重要,因此你需要一些基本的 HTML、CSS 或 JavaScript 知識(shí)來(lái)創(chuàng)建一個(gè)簡(jiǎn)單的界面。
另一種選擇是在前端和后端都使用 python。由于 Anvil 庫(kù)消除了對(duì) HTML、CSS 和 JavaScript 的需求,你可以只關(guān)注 Python 代碼。
你可以使用 python 通過(guò) Web 框架(如 django 和 flask)構(gòu)建 Web 應(yīng)用程序。使用 Python 構(gòu)建 Web 應(yīng)用程序的框架列表很長(zhǎng),你有很多選擇,但 django 和 flask 仍然是非常流行的 Web 框架。
桌面圖形用戶(hù)界面
無(wú)論是臺(tái)式機(jī)還是筆記本電腦,每次你在電腦上執(zhí)行一項(xiàng)任務(wù),這個(gè)任務(wù)都是通過(guò)一個(gè)應(yīng)用程序完成的。作為一個(gè)中級(jí)的 Python 開(kāi)發(fā)人員,你可以創(chuàng)建自己的桌面應(yīng)用程序。
你不必學(xué)習(xí)任何前端技術(shù)來(lái)創(chuàng)建自己的圖形用戶(hù)界面(GUI)應(yīng)用程序,而是使用 Python 構(gòu)建所有部分。
有一些框架可以用于構(gòu)建桌面應(yīng)用程序,PySimpleGUI 就是其中之一,對(duì)于中級(jí) Python 開(kāi)發(fā)人員來(lái)說(shuō),它非常友好。
像 PyQt5 這樣的高級(jí)圖形用戶(hù)界面框架非常強(qiáng)大,但是它的學(xué)習(xí)曲線(xiàn)非常陡峭。
你為桌面 GUI 創(chuàng)建的軟件能夠在任何 Windows、Linux 或 Mac 操作系統(tǒng)上工作。創(chuàng)建項(xiàng)目之后,你所要做的就是將其編譯為可執(zhí)行文件,供你選擇的操作系統(tǒng)使用。
命令行
命令行應(yīng)用程序是在控制臺(tái)窗口中工作的應(yīng)用程序,它是 Windows 上的命令提示,以及 Linux 和 Mac 上的終端。
你可以單擊使用 Web 或 GUI 應(yīng)用程序,但可以為命令行應(yīng)用程序輸入命令。命令行應(yīng)用程序的用戶(hù)需要有一些技術(shù)知識(shí),因?yàn)樗麄冃枰褂妹睢?/p>
命令行應(yīng)用程序可能不如 Web 或 GUI 應(yīng)用程序漂亮或易于使用,但這并不會(huì)使它們不如 Web 或 GUI 應(yīng)用程序強(qiáng)大。
通過(guò)改變文本應(yīng)用的顏色可以改善命令行應(yīng)用程序的外觀。有一些庫(kù)可以用于著色,如 Colorma 和 Colored。
你可以使用諸如 docopt、argparse 和 click 等框架來(lái)構(gòu)建應(yīng)用程序。
Web 項(xiàng)目構(gòu)想
在本節(jié)中,你將看到 Web 項(xiàng)目的構(gòu)想。這些項(xiàng)目思想可以分為實(shí)用工具和理論工具。
以下是項(xiàng)目思路:
-
內(nèi)容聚合器
-
Regex 查詢(xún)工具
-
縮短網(wǎng)址
-
便利貼
-
測(cè)驗(yàn)申請(qǐng)
內(nèi)容聚合器
內(nèi)容是王道。從博客到社交媒體平臺(tái),它在網(wǎng)絡(luò)上無(wú)處不在。為了了解最新的內(nèi)容,你需要不斷地在互聯(lián)網(wǎng)上搜索新的信息。做到這一點(diǎn)的其中一種方法是手動(dòng)檢查所有站點(diǎn),以查看新發(fā)布的內(nèi)容。但這很費(fèi)時(shí),也很累。
這就是需要內(nèi)容聚合器的地方:內(nèi)容聚合器從不同的網(wǎng)站獲取信息,并將所有這些信息聚合在一起。因此,你不必訪(fǎng)問(wèn)多個(gè)網(wǎng)站來(lái)獲取最新信息:一個(gè)網(wǎng)站就足夠了。
使用內(nèi)容聚合器,可以從一個(gè)聚合所有內(nèi)容的站點(diǎn)獲取所有最新信息。人們可以看到他們感興趣的帖子,并且可以了解更多關(guān)于它們的信息。
內(nèi)容聚合器示例
下面是內(nèi)容聚合器思想的一些應(yīng)用:
-
AllTop
-
Hvper
技術(shù)細(xì)節(jié)
這個(gè)項(xiàng)目理念的主要目標(biāo)是聚合內(nèi)容。首先,你需要明確你希望內(nèi)容聚合器從哪些網(wǎng)站獲取內(nèi)容。然后,你可以發(fā)送 HTTP 請(qǐng)求、使用 BeautifulSoup 等庫(kù)來(lái)解析和從站點(diǎn)中獲取必要的內(nèi)容。
應(yīng)用程序可以將其內(nèi)容聚合實(shí)現(xiàn)為后臺(tái)進(jìn)程。像 celery 或者 apscheduler 這樣的庫(kù)可以幫助解決這個(gè)問(wèn)題。你可以試用一下 apscheduler,它對(duì)于小后臺(tái)進(jìn)程來(lái)說(shuō)非常棒。
從不同的站點(diǎn)抓取內(nèi)容后,你需要將其保存到某個(gè)地方。所以,你需要使用一個(gè)數(shù)據(jù)庫(kù)來(lái)保存抓取的內(nèi)容。
額外的挑戰(zhàn)
如果你想要更嚴(yán)峻的挑戰(zhàn),那么你可以添加更多網(wǎng)站。這將幫助你學(xué)到如何從網(wǎng)站上學(xué)習(xí)和提取信息。
你還可以讓用戶(hù)訂閱你聚合的某些站點(diǎn)。然后,在一天結(jié)束時(shí),內(nèi)容聚合器會(huì)將當(dāng)天的文章發(fā)送到用戶(hù)的電子郵箱。
Regex 查詢(xún)工具
我們每天都處理短信。舉個(gè)例子,這篇文章也是文本,它有自己的結(jié)構(gòu)。有時(shí),你需要在文本中找到某些信息,在文本編輯器中使用常規(guī)搜索工具可能是無(wú)效的。
這就是 Regex 查詢(xún)工具的作用所在。Regex 是一組字符串,它會(huì)檢查查詢(xún)的有效性。當(dāng) Regex 匹配文本中的模式時(shí),它告訴用戶(hù)并突出顯示匹配的模式。因此,你的 Regex 查詢(xún)工具將檢查用戶(hù)傳入的 Regex 字符串的有效性。
使用 Regex 查詢(xún)工具,用戶(hù)可以在 Web 上快速檢查其 Regex 字符串的有效性。相比使用文本編輯器檢查字符串,這對(duì)用戶(hù)來(lái)說(shuō)更加容易。
Regex 查詢(xún)工具示例
以下是 Regex 查詢(xún)工具思想的一些實(shí)現(xiàn):
-
FreeFormatter
-
RegexTester
技術(shù)細(xì)節(jié)
這種類(lèi)型的項(xiàng)目的主要目標(biāo)是告訴用戶(hù)輸入的查詢(xún)字符串的有效性。你可以讓它給出正響應(yīng)或負(fù)響應(yīng),例如查詢(xún)字符串有效,查詢(xún)字符串無(wú)效,實(shí)現(xiàn)綠色的正響應(yīng)和紅色的負(fù)響應(yīng)。
你不必從頭開(kāi)始實(shí)現(xiàn)查詢(xún)工具,你可以使用 Python 的標(biāo)準(zhǔn) re 庫(kù),它可以用來(lái)對(duì)輸入的文本運(yùn)行查詢(xún)字符串。當(dāng)查詢(xún)字符串不匹配時(shí),re 庫(kù)將返回 none,當(dāng)查詢(xún)字符串匹配時(shí),它將返回匹配的字符串。
有些用戶(hù)可能無(wú)法完全理解 Regex,你可以制作一個(gè)頁(yè)面來(lái)解釋 Regex 的工作原理。你可以制作一些有趣的文檔,讓用戶(hù)喜歡上學(xué)習(xí)和理解 Regex。
額外的挑戰(zhàn)
制作一個(gè)只返回 Regex 有效性的項(xiàng)目是可以的,但你也可以添加替換功能。這意味著應(yīng)用程序?qū)z查 Regex 的有效性,并允許用戶(hù)用其他內(nèi)容替換匹配的字符串。因此,該工具不再是查找工具,而是替換工具。
縮短網(wǎng)址
URL 可能非常長(zhǎng),不便于用戶(hù)使用。當(dāng)人們共享鏈接,甚至試圖記住一個(gè) URL 時(shí),這是很困難的,因?yàn)榇蠖鄶?shù) URL 都充滿(mǎn)了困難的字符,而不是有意義的單詞。
這就是 URL 需要縮短器的地方。URL 縮短器減少了 URL 中的字符或字母,使它們更容易閱讀和記憶。像「xyz.com/wwryb78&svnhkn%sghq?sfiyh」這樣的網(wǎng)址可以縮短為「xyz.com/piojwr」。
有了 URL 縮短器,URL 就成了一種有趣的工作。
URL 縮短器示例
以下是 URL 縮短器思想的一些實(shí)現(xiàn):
-
Bitly
-
MeShort
技術(shù)細(xì)節(jié)
這個(gè)項(xiàng)目思想的主要目標(biāo)是縮短 URL。應(yīng)用程序?qū)⒖s短 URL,然后在訪(fǎng)問(wèn)縮短的 URL 時(shí)將用戶(hù)重定向到原始 URL。
在應(yīng)用程序中,用戶(hù)將輸入原始的 URL,結(jié)果將得到新的、縮短的 URL。為此,你可以使用隨機(jī)和字符串模塊的組合來(lái)為縮短的 URL 生成字符。
由于用戶(hù)將在幾天、幾個(gè)月甚至幾年后訪(fǎng)問(wèn)縮短的 URL,因此需要將原始和縮短的 URL 保存在數(shù)據(jù)庫(kù)中。當(dāng)一個(gè)請(qǐng)求出現(xiàn)時(shí),應(yīng)用程序會(huì)檢查該 URL 是否存在并重定向到原始的 URL,否則它會(huì)重定向到 404 頁(yè)。
額外的挑戰(zhàn)
生成一個(gè)帶有隨機(jī)字符的縮短的 URL 比長(zhǎng)的隨機(jī) URL 更好。但是,你可以為用戶(hù)提供更好的結(jié)果。你可以添加一個(gè)自定義 URL 的功能,這樣用戶(hù)就可以自定義生成 URL。
毫無(wú)疑問(wèn),自定義的 xyz.com/mysite URL 比隨機(jī)生成的 xyz.com/piojwr URL 要好。
便利貼
人在一天之內(nèi)會(huì)有很多想法,但也很容易忘記。解決遺忘問(wèn)題的一個(gè)方法是在忘記之前把它們記下來(lái)。雖然一些被遺忘的想法可能是微不足道的,但有些想法可能相當(dāng)強(qiáng)大。
這就是便利貼的用武之地:便利貼是一種背面帶有低粘性粘合劑的小紙張,可以貼在文檔、墻壁等表面。貼便條使記東西更容易。這和便利貼項(xiàng)目的想法類(lèi)似。它是一個(gè) Web 應(yīng)用程序,因此可以允許用戶(hù)記下事情并在任何地方訪(fǎng)問(wèn)。
有了便利貼,人們現(xiàn)在可以在任何地方記下東西,而不用擔(dān)心忘記東西或把筆記放錯(cuò)地方,這是物理筆記的一種可能性。
便利貼示例
以下是便利貼思想的一些實(shí)現(xiàn):
-
Pinup
-
Note.ly
技術(shù)細(xì)節(jié)
這個(gè)項(xiàng)目的主要目標(biāo)是讓用戶(hù)可以記下想法。這意味著每個(gè)用戶(hù)都有自己的注釋?zhuān)虼藨?yīng)用程序需要具有帳戶(hù)創(chuàng)建功能,這樣可以確保每個(gè)用戶(hù)的筆記私有。
Django 配備了一個(gè)用戶(hù)認(rèn)證系統(tǒng),因此它可能是一個(gè)不錯(cuò)的選擇。你也可以使用其他框架,如 bottle 或 flask,但你必須自己實(shí)現(xiàn)用戶(hù)身份驗(yàn)證系統(tǒng)。
由于用戶(hù)可能需要在不同的模塊下分離筆記,因此實(shí)現(xiàn)一個(gè)允許用戶(hù)對(duì)筆記進(jìn)行分類(lèi)的功能將使應(yīng)用程序更有用。
例如,你可能需要對(duì)算法和數(shù)據(jù)結(jié)構(gòu)進(jìn)行注釋?zhuān)虼四阈枰谶@些類(lèi)別中分離注釋。
你需要存儲(chǔ)每個(gè)用戶(hù)的信息和注釋?zhuān)虼藬?shù)據(jù)庫(kù)成為這個(gè)項(xiàng)目的重要部分。如果要使用 MySQL 數(shù)據(jù)庫(kù),那你需要使用 MySQLdb 模塊。如果要使用 PostgreSQL 數(shù)據(jù)庫(kù),那么可以使用 psycopg2 模塊。你可以使用其他模塊,但這一切都取決于你選擇使用的數(shù)據(jù)庫(kù)。
額外的挑戰(zhàn)
遺忘是人類(lèi)的共性,甚至在做了筆記時(shí)也是如此。你可以添加一個(gè)功能來(lái)提醒用戶(hù)。此功能允許用戶(hù)設(shè)置提醒時(shí)間,因此應(yīng)用程序?qū)⒃谔嵝褧r(shí)間時(shí)通過(guò)電子郵件向用戶(hù)發(fā)送提醒。
測(cè)驗(yàn)申請(qǐng)
知識(shí)就是力量。世界上有很多東西需要學(xué)習(xí),而測(cè)驗(yàn)有助于測(cè)試對(duì)這些概念的理解。作為一個(gè)中級(jí)別的 Python 開(kāi)發(fā)人員,你不必理解語(yǔ)言的所有內(nèi)容。參加考試是一種發(fā)現(xiàn)你知識(shí)漏洞的方法。
這里就需要小測(cè)驗(yàn)應(yīng)用程序了。測(cè)驗(yàn)應(yīng)用程序?qū)⑾蛴脩?hù)提出問(wèn)題,并期望這些問(wèn)題的正確答案。把測(cè)驗(yàn)申請(qǐng)看作是一種問(wèn)卷調(diào)查。
使用測(cè)驗(yàn)應(yīng)用程序,特殊用戶(hù)將可以創(chuàng)建測(cè)試,普通用戶(hù)可以回答問(wèn)題并測(cè)試他們對(duì)測(cè)試主題的理解。
測(cè)驗(yàn)應(yīng)用示例
以下是測(cè)驗(yàn)應(yīng)用程序理念的一些實(shí)現(xiàn):
-
myQuiz
-
Kahoot
技術(shù)細(xì)節(jié)
這個(gè)項(xiàng)目的主要目標(biāo)是設(shè)置測(cè)驗(yàn)并讓人們回答。因此,用戶(hù)應(yīng)該能夠設(shè)置問(wèn)題,其他用戶(hù)應(yīng)該能夠回答這些問(wèn)題。之后,應(yīng)用程序?qū)⒐甲罱K分?jǐn)?shù)和正確答案。
如果你希望用戶(hù)能夠記錄他們的分?jǐn)?shù),你可能需要實(shí)現(xiàn)帳戶(hù)創(chuàng)建功能。
創(chuàng)建測(cè)試的用戶(hù)應(yīng)該能夠通過(guò)簡(jiǎn)單地上傳文本文件來(lái)創(chuàng)建包含問(wèn)題和答案的測(cè)試。文本文件的格式可以由用戶(hù)決定,因此應(yīng)用程序可以從文件轉(zhuǎn)換為測(cè)驗(yàn)。
你需要為這個(gè)項(xiàng)目實(shí)現(xiàn)一個(gè)數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)將存儲(chǔ)每個(gè)用戶(hù)的問(wèn)題、可能的答案、正確的答案和分?jǐn)?shù)。
額外的挑戰(zhàn)
如果需要更多的挑戰(zhàn),你可以允許用戶(hù)向測(cè)驗(yàn)添加計(jì)時(shí)器。這樣,測(cè)試的創(chuàng)建者就可以確定用戶(hù)應(yīng)該在測(cè)試中的每個(gè)問(wèn)題上花費(fèi)多少時(shí)間。
有一個(gè)測(cè)驗(yàn)分享功能是很好的,這樣用戶(hù)就可以在其他平臺(tái)上與朋友分享他們認(rèn)為有趣的測(cè)驗(yàn)。
圖形用戶(hù)界面項(xiàng)目理念
在本節(jié)中,你將看到圖形用戶(hù)界面的項(xiàng)目構(gòu)想。這些項(xiàng)目理念可以分為娛樂(lè)、金融和實(shí)用工具。
以下是項(xiàng)目構(gòu)想:
-
MP3 播放器
-
報(bào)警工具
-
文件管理器
-
費(fèi)用追蹤器
MP3 播放器
如今,音頻和文本一樣重要。因?yàn)橐纛l文件是數(shù)字文件,所以你需要一個(gè)可以播放它們的工具。如果沒(méi)有播放器,你將無(wú)法收聽(tīng)音頻文件的內(nèi)容。
這就是 MP3 播放器的用武之地。MP3 播放器是播放 MP3 和其他數(shù)字音頻文件的設(shè)備。這個(gè) MP3 播放器圖形用戶(hù)界面項(xiàng)目的想法試圖模擬物理 MP3 播放器。你可以構(gòu)建可以在臺(tái)式機(jī)或筆記本電腦上播放 MP3 文件的軟件。
完成 MP3 播放器項(xiàng)目的構(gòu)建后,用戶(hù)可以播放 MP3 文件和其他數(shù)字音頻文件,而無(wú)需購(gòu)買(mǎi)物理 MP3 播放器。他們可以用電腦播放 MP3 文件。
MP3 播放器示例
以下是 MP3 播放器想法的一些實(shí)現(xiàn):
-
MusicBee
-
Foobar2000
技術(shù)細(xì)節(jié)
該項(xiàng)目的主要目標(biāo)是允許用戶(hù)播放 MP3 和數(shù)字音頻文件。為了吸引用戶(hù),應(yīng)用程序必須有一個(gè)簡(jiǎn)單但漂亮的用戶(hù)界面。
可以有一個(gè)界面來(lái)列出可用的 MP3 文件,你還可以讓用戶(hù)選擇列出不是 MP3 的其他數(shù)字音頻文件。
用戶(hù)還希望 MP3 播放器有一個(gè)顯示正在播放的文件信息的界面,包括文件名、文件長(zhǎng)度、播放量和未播放量(以分鐘和秒為單位)。
Python 有一些可以播放音頻文件的庫(kù),例如 pygame,它讓你可以用幾行代碼來(lái)處理多媒體文件。你還可以查看 pymedia 和 simpleaudio。
這些庫(kù)可以處理許多數(shù)字音頻文件。它們可以處理其他類(lèi)型的文件,而不僅僅是 MP3。
你還可以實(shí)現(xiàn)允許用戶(hù)創(chuàng)建播放列表的功能。要做到這一點(diǎn),你需要一個(gè)數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)創(chuàng)建的播放列表上的信息。Python 的 sqlite3 模塊允許你使用 SQLite 數(shù)據(jù)庫(kù)。
在這種情況下,SQLite 數(shù)據(jù)庫(kù)是一個(gè)更好的選擇,因?yàn)樗腔谖募?,并且比其?SQL 數(shù)據(jù)庫(kù)更容易設(shè)置。雖然 SQLite 是基于文件的,但是保存數(shù)據(jù)比保存常規(guī)文件要好。
額外的挑戰(zhàn)
如果你想接受更大的挑戰(zhàn),你可以添加一個(gè)功能,允許 MP3 播放器重復(fù)當(dāng)前播放的文件,甚至可以隨機(jī)播文件列表中的文件。
還可以實(shí)現(xiàn)允許用戶(hù)提高和降低音頻文件播放速度的功能。用戶(hù)會(huì)發(fā)現(xiàn)這很有趣,因?yàn)樗麄兡軌蛞员绕綍r(shí)更慢或更快的速度播放文件。
報(bào)警工具
有一句諺語(yǔ)是,「時(shí)間和潮流不等人」,但我們的生活中發(fā)生這么多事情,很難不忘記時(shí)間。為了能夠跟蹤時(shí)間,我們需要一個(gè)提醒。
這就是報(bào)警工具的作用。警報(bào)是一種在特定條件下發(fā)出聲音或視覺(jué)信號(hào)的裝置。這個(gè)警報(bào)工具項(xiàng)目的想法是試圖建立一個(gè)軟件來(lái)發(fā)出警報(bào)。當(dāng)滿(mǎn)足一定條件時(shí),報(bào)警工具發(fā)出音頻信號(hào)。在這種情況下,一定的條件指的就是設(shè)定時(shí)間。
通過(guò)警報(bào)工具,用戶(hù)可以設(shè)置警報(bào),在一天中的某些時(shí)間提醒他們一些事情。警報(bào)工具項(xiàng)目將可以在用戶(hù)的筆記本電腦或桌面設(shè)備上工作,他們不必購(gòu)買(mǎi)物理計(jì)時(shí)器。
報(bào)警工具示例
以下是警報(bào)工具構(gòu)想的一些實(shí)現(xiàn):
-
FreeAlarmClock
-
TimerForMac
技術(shù)細(xì)節(jié)
這個(gè)項(xiàng)目的主要目標(biāo)是在一天中的某些時(shí)間激活音頻信號(hào)。因此,定時(shí)和要播放的音頻信號(hào)是報(bào)警工具中最重要的部分。
報(bào)警工具應(yīng)允許用戶(hù)創(chuàng)建、編輯和刪除報(bào)警。它還應(yīng)該有一個(gè)界面,列出所有用戶(hù)沒(méi)有刪除的警報(bào)。因此,它應(yīng)該列出活動(dòng)和非活動(dòng)警報(bào)。
由于它是一個(gè)警報(bào),應(yīng)用程序必須在設(shè)置的時(shí)間播放音調(diào)。有播放音頻的庫(kù),比如 pygame 庫(kù)。
在代碼邏輯中,應(yīng)用程序必須不斷檢查設(shè)置的報(bào)警時(shí)間。到達(dá)時(shí)間后,它會(huì)觸發(fā)一個(gè)函數(shù)來(lái)播放警報(bào)音。
由于應(yīng)用程序?qū)z查設(shè)置的報(bào)警時(shí)間,這意味著應(yīng)用程序必須將報(bào)警保存在數(shù)據(jù)庫(kù)中。數(shù)據(jù)庫(kù)應(yīng)該存儲(chǔ)報(bào)警日期、時(shí)間和音調(diào)位置等信息。
額外的挑戰(zhàn)
如果還需要額外的功能,你可以允許用戶(hù)設(shè)置重復(fù)報(bào)警。他們將能夠在一周中的某些天、每個(gè)星期的某個(gè)時(shí)間響起的警報(bào)。例如,可以在每周一下午 2:00 設(shè)置警報(bào)。
你還可以添加暫停功能,這樣你的用戶(hù)就可以暫停警報(bào),而不僅僅是解除警報(bào)。
文件管理器
一個(gè)普通的 PC 用戶(hù)在個(gè)人電腦上都有很多很多的文件。如果所有這些文件都放在一個(gè)目錄中,則很難查找文件或目錄。因此,有必要對(duì)文件進(jìn)行適當(dāng)?shù)陌才藕凸芾怼?/p>
這就是文件管理器出現(xiàn)的地方。文件管理器允許用戶(hù)通過(guò)用戶(hù)界面管理文件和目錄。雖然文件可以通過(guò)命令行進(jìn)行管理,但并非所有用戶(hù)都知道如何做到這一點(diǎn)。
使用文件管理器,用戶(hù)可以正確地安排、訪(fǎng)問(wèn)和管理其文件和目錄,而不需要知道如何使用命令行。文件管理器允許用戶(hù)執(zhí)行的某些任務(wù)包括復(fù)制、移動(dòng)和重命名文件或目錄。
文件管理器工具示例
-
FreeCommander
-
Explorer++
技術(shù)細(xì)節(jié)
文件管理器項(xiàng)目的主要目標(biāo)是為用戶(hù)提供一個(gè)界面來(lái)管理他們的文件。用戶(hù)需要一個(gè)文件管理器,它界面美觀且易用。
你可以使用 PySimpleGUI 庫(kù)創(chuàng)建獨(dú)特的用戶(hù)界面,這個(gè)庫(kù)可以讓你省去很多復(fù)雜的操作。
你的用戶(hù)應(yīng)該能夠執(zhí)行簡(jiǎn)單的任務(wù),如創(chuàng)建新目錄或空文本文件。他們還應(yīng)該能夠復(fù)制和移動(dòng)文件或目錄。
sys、os 和 shutil 庫(kù)對(duì)于這個(gè)項(xiàng)目非常有用,因?yàn)樗鼈兛梢杂糜谠谟脩?hù)單擊時(shí)在后臺(tái)對(duì)文件執(zhí)行操作。
網(wǎng)格視圖和列表視圖是當(dāng)今流行的視圖,你可以在應(yīng)用程序中實(shí)現(xiàn)這兩種視圖。之后用戶(hù)可以選擇適合他們的視圖選項(xiàng)。
額外的挑戰(zhàn)
要使文件管理器更高級(jí)一點(diǎn),可以實(shí)現(xiàn)搜索功能。這個(gè)功能讓用戶(hù)可以搜索文件和目錄,而不必手動(dòng)查找它們。
還可以實(shí)現(xiàn)排序功能。這將允許用戶(hù)根據(jù)不同的順序?qū)ξ募M(jìn)行排序,如時(shí)間、字母順序或大小。
費(fèi)用追蹤器
我們有日常費(fèi)用,從雜貨到衣服再到賬單。有這么多的開(kāi)支,我們通常會(huì)忘記它們,繼續(xù)花錢(qián),直到我們快沒(méi)錢(qián)了。追蹤器可以幫助人們觀察他們的支出。
這就是費(fèi)用追蹤器出現(xiàn)的地方。費(fèi)用追蹤器是一種軟件工具,允許用戶(hù)跟蹤他們的花費(fèi)。它還可以分析費(fèi)用,這取決于它的先進(jìn)程度,但現(xiàn)在讓我們先做最簡(jiǎn)單的。
通過(guò)費(fèi)用跟蹤,用戶(hù)可以設(shè)置預(yù)算并跟蹤他們的支出,從而做出更好的財(cái)務(wù)決策。
費(fèi)用追蹤器示例
以下是費(fèi)用跟蹤概念的一些實(shí)現(xiàn):
-
Buddi
-
GnuCash
技術(shù)細(xì)節(jié)
本項(xiàng)目的主要目標(biāo)是跟蹤用戶(hù)的開(kāi)支。必須進(jìn)行一些統(tǒng)計(jì)分析,以便向用戶(hù)提供有關(guān)其支出的正確信息,并幫助他們更好地支出。
雖然跟蹤費(fèi)用是關(guān)鍵,但良好的界面也很重要。使用 pysimplegui 可以創(chuàng)建一個(gè)獨(dú)特的界面來(lái)改善用戶(hù)的體驗(yàn)。
pandas 和 Matplotlib 等 Pydata 庫(kù)可以幫助構(gòu)建支出跟蹤程序。
pandas 可用于數(shù)據(jù)分析,Matplotlib 庫(kù)可用于繪制圖形。圖形將為用戶(hù)提供開(kāi)支的可視化表示,可視化表示通常更容易理解。
應(yīng)用程序?qū)⒔邮諄?lái)自用戶(hù)的數(shù)據(jù)。這里的數(shù)據(jù)是輸入的費(fèi)用。因此,你必須將支出存儲(chǔ)在數(shù)據(jù)庫(kù)中。對(duì)于這個(gè)項(xiàng)目來(lái)說(shuō),SQLite 數(shù)據(jù)庫(kù)是一個(gè)很好的選擇,因?yàn)樗梢赃M(jìn)行快速設(shè)置。你可以將 sqlite3 模塊用于 SQLite 數(shù)據(jù)庫(kù)。
額外的挑戰(zhàn)
為了讓你的用戶(hù)從這個(gè)項(xiàng)目中受益,他們必須定期輸入他們的開(kāi)支,但是他們可能會(huì)忘記這樣做。因此,實(shí)現(xiàn)提醒功能很有用。應(yīng)用程序可以在一天或一周的某些時(shí)間發(fā)送通知,提醒用戶(hù)使用費(fèi)用跟蹤程序。
命令行項(xiàng)目構(gòu)想
在本節(jié)中,你將看到命令行的項(xiàng)目理念。所討論的項(xiàng)目思想可以歸類(lèi)為實(shí)用工具。
以下是項(xiàng)目構(gòu)想:
-
聯(lián)系人簿
-
文件連接檢查器
-
批量文件重命名工具
-
目錄樹(shù)生成器
聯(lián)系人簿
我們每天都遇到很多人,結(jié)識(shí)很多新朋友。我們讓他們留下聯(lián)系方式以便以后保持聯(lián)系。遺憾的是,保管好收到的聯(lián)系信息可能很困難。一種方法是寫(xiě)下聯(lián)系人的詳細(xì)信息。但這并不安全,因?yàn)閷?shí)體筆記很容易丟失。
這就是通訊錄項(xiàng)目的切入點(diǎn)。聯(lián)系人簿是用于保存聯(lián)系人詳細(xì)信息(如姓名、地址、電話(huà)號(hào)碼和電子郵件地址)的工具。通過(guò)這個(gè)聯(lián)系人簿項(xiàng)目,你可以構(gòu)建一個(gè)軟件工具,人們可以使用它來(lái)保存和查找聯(lián)系人詳細(xì)信息。
有了聯(lián)系人簿項(xiàng)目,用戶(hù)可以保存他們的聯(lián)系人,同時(shí)減少丟失保存的聯(lián)系人詳細(xì)信息的風(fēng)險(xiǎn)。這個(gè)聯(lián)系人薄總是可以通過(guò)命令行從計(jì)算機(jī)訪(fǎng)問(wèn)。
通訊錄工具示例
雖然市面上有很多通訊錄應(yīng)用程序,但很少找到命令行通訊錄產(chǎn)品,大多數(shù)是 Web、移動(dòng)或 GUI 應(yīng)用程序。
以下是通訊錄構(gòu)想的一些實(shí)現(xiàn):
-
Simple Contacts
-
Pobuca Connect
技術(shù)細(xì)節(jié)
本項(xiàng)目的主要目標(biāo)是保存聯(lián)系人詳細(xì)信息。設(shè)置用戶(hù)可用于輸入聯(lián)系人詳細(xì)信息的命令很重要。你可以使用 argparse 或單擊命令行框架。它們抽象了很多復(fù)雜的東西,所以你只需要關(guān)注在執(zhí)行命令時(shí)要運(yùn)行的邏輯。
你應(yīng)該實(shí)現(xiàn)的一些功能包括刪除聯(lián)系人、更新聯(lián)系人信息和列出保存的聯(lián)系人的命令。你還可以允許用戶(hù)使用不同的參數(shù)(如字母順序或聯(lián)系人創(chuàng)建日期)進(jìn)行排序來(lái)列出聯(lián)系人。
因?yàn)樗且粋€(gè)命令行項(xiàng)目,所以用 SQLite 數(shù)據(jù)庫(kù)保存聯(lián)系人是一個(gè)很好的選擇。SQLite 易于用戶(hù)設(shè)置。你可以將聯(lián)系人詳細(xì)信息保存在一個(gè)文件中,但這樣就沒(méi)有使用 SQLite 所能獲得的好處多,例如性能和安全性。
要在這個(gè)項(xiàng)目中使用 SQLite 數(shù)據(jù)庫(kù),Python sqlite3 模塊將非常有用。
額外的挑戰(zhàn)
還記得數(shù)據(jù)庫(kù)是如何存儲(chǔ)在用戶(hù)計(jì)算機(jī)上的嗎?如果發(fā)生了什么事情,比如用戶(hù)丟失了他們的文件怎么辦?這意味著他們也會(huì)失去聯(lián)系方式。
你可以進(jìn)一步挑戰(zhàn)自己,并將數(shù)據(jù)庫(kù)備份到在線(xiàn)存儲(chǔ)平臺(tái)。要做到這一點(diǎn),你可以每隔一定的時(shí)間將數(shù)據(jù)庫(kù)文件上傳到云端。
你還可以添加一個(gè)允許用戶(hù)自己備份數(shù)據(jù)庫(kù)的命令。這樣,如果數(shù)據(jù)庫(kù)文件丟失,用戶(hù)仍然可以訪(fǎng)問(wèn)聯(lián)系人。
應(yīng)該注意,你可能需要某種形式的標(biāo)識(shí),這樣聯(lián)系人簿就可以知道哪個(gè)數(shù)據(jù)庫(kù)文件屬于哪個(gè)用戶(hù)。實(shí)現(xiàn)用戶(hù)身份驗(yàn)證功能是實(shí)現(xiàn)它的一種方法。
站點(diǎn)連接檢查器
當(dāng)你訪(fǎng)問(wèn)一個(gè) URL 時(shí),你期望能看到請(qǐng)求的頁(yè)面。但情況并非總是如此。有時(shí)候,網(wǎng)站可能會(huì)關(guān)閉,所以你不會(huì)得到想要的結(jié)果。相反,你將收到錯(cuò)誤消息。你可以不斷地嘗試一個(gè)關(guān)閉的網(wǎng)站,直到你得到你需要的信息。
這是站點(diǎn)連接檢查器項(xiàng)目的切入點(diǎn)。站點(diǎn)連接檢查器訪(fǎng)問(wèn)一個(gè) URL 并返回該 URL 的狀態(tài):它是活動(dòng)的還是非活動(dòng)的。站點(diǎn)連接檢查器將每隔一段時(shí)間訪(fǎng)問(wèn) URL,并返回每次訪(fǎng)問(wèn)的結(jié)果。
站點(diǎn)連接檢查器不必手動(dòng)訪(fǎng)問(wèn) URL,而是可以為你完成所有這些手動(dòng)工作。這樣,你只會(huì)得到檢查結(jié)果,而不必花時(shí)間在瀏覽器上,等待站點(diǎn)上線(xiàn)。
站點(diǎn)連接檢查程序示例
以下是站點(diǎn)連接檢查器思想的一些實(shí)現(xiàn):
-
Ping
-
Site24x7
技術(shù)細(xì)節(jié)
本項(xiàng)目的主要目標(biāo)是檢查站點(diǎn)的狀態(tài)。因此,你需要編寫(xiě)代碼來(lái)檢查網(wǎng)站的狀態(tài)。
你可以選擇對(duì)連接使用 TCP 或 ICMP。socket 模塊是要檢查的模塊。你還可以閱讀 Python 中的 socket 編程指南。
通過(guò)選擇的框架(無(wú)論是 docopt、click 還是 argparse 框架),你可以添加命令以允許用戶(hù)從要檢查的站點(diǎn)列表中添加和刪除站點(diǎn)。
用戶(hù)還應(yīng)該能夠啟動(dòng)工具,停止它,并確定時(shí)間間隔。
由于必須保存要檢查的文件列表,因此可以將其保存到文件中(僅保存站點(diǎn)列表),也可以通過(guò) sqlite3 模塊使用 SQLite 數(shù)據(jù)庫(kù)。
額外的挑戰(zhàn)
應(yīng)用程序可以檢查站點(diǎn)的連接狀態(tài),并將結(jié)果顯示到命令行。但這將要求用戶(hù)繼續(xù)檢查命令行。
你可以增加挑戰(zhàn)并實(shí)現(xiàn)通知功能。通知功能可以是在后臺(tái)播放的聲音,用于在網(wǎng)站狀態(tài)更改時(shí)提醒用戶(hù)。你需要一個(gè)數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)站點(diǎn)的以前狀態(tài),這是工具在狀態(tài)改變時(shí)唯一能辨別的方法。
批量文件重命名工具
有時(shí),你需要根據(jù)某些約定命名目錄中的所有文件。例如,你可以將目錄中的所有文件命名為 file0001.jpg,其數(shù)字根據(jù)目錄中的文件數(shù)增加。手動(dòng)操作可能會(huì)帶來(lái)壓力和重復(fù)性。
批量文件重命名工具允許用戶(hù)重命名大量文件,而無(wú)需手動(dòng)重命名文件。
這樣可以節(jié)省用戶(hù)很多時(shí)間。它省去了他們做無(wú)聊的重復(fù)工作和犯錯(cuò)誤的麻煩。使用批量文件重命名工具,用戶(hù)可以在幾秒鐘內(nèi)重命名文件,而不會(huì)出現(xiàn)任何錯(cuò)誤。
批量文件重命名工具示例
以下是批量文件重命名思想的一些實(shí)現(xiàn):
-
Ren
-
Rename
技術(shù)細(xì)節(jié)
這個(gè)項(xiàng)目的主要目標(biāo)是重命名文件。因此,應(yīng)用程序需要找到一種方法來(lái)操作目標(biāo)文件。the os、sys 和 shutil 庫(kù)在本項(xiàng)目的大部分地方都會(huì)用到。
用戶(hù)可以使用命名約定重命名目錄中的所有文件。因此,他們應(yīng)該能夠傳遞選擇的命名約定。如果您了解 Regex 的工作原理,Regex 模塊將幫助匹配所需的命名模式。
用戶(hù)可能希望將諸如 myfiles 之類(lèi)的命名約定作為命令的一部分傳遞,并希望該工具重命名所有文件,如 myfiles XYZ,其中 XYZ 是一個(gè)數(shù)字。他們還應(yīng)該能夠選擇要重命名文件的目錄。
額外的挑戰(zhàn)
這個(gè)項(xiàng)目的主要挑戰(zhàn)是重命名目錄中的所有文件。但是用戶(hù)可能只需要命名一定數(shù)量的文件。要測(cè)試你的技能,你可以實(shí)現(xiàn)一個(gè)功能允許用戶(hù)選擇要重命名的文件數(shù),而不是所有文件。
請(qǐng)注意,僅重命名一定數(shù)量的文件需要工具根據(jù)字母順序、文件創(chuàng)建時(shí)間或文件大小對(duì)文件進(jìn)行排序,具體取決于用戶(hù)的要求。
目錄樹(shù)生成器
目錄就像系列樹(shù):每個(gè)目錄都與其他目錄有特定的關(guān)系。除了一個(gè)空的根目錄之外,任何目錄都不能單獨(dú)存在。
當(dāng)你處理文件和目錄時(shí),很難看到目錄之間的關(guān)系,因?yàn)槟阒荒芸吹疆?dāng)前目錄中存在的內(nèi)容。你要么使用文件管理器,要么使用命令行。
使用目錄樹(shù)生成器,你可以像樹(shù)或映射一樣查看文件和目錄之間的關(guān)系。
這樣更容易理解文件和目錄的位置。當(dāng)你解釋某些概念時(shí),目錄樹(shù)映射很重要,目錄樹(shù)生成器使你更容易獲得文件和目錄關(guān)系的可視化表示。
目錄樹(shù)生成器示例
以下是目錄樹(shù)生成器思想的一些實(shí)現(xiàn):
-
Tree
-
Dirtreex
技術(shù)細(xì)節(jié)
目錄樹(shù)生成器的主要目標(biāo)是可視化文件和目錄之間的關(guān)系。OS 庫(kù)在列出所選目錄中的文件和目錄時(shí)非常有用。
使用 docopt 或 argparse 這樣的框架有助于抽象很多東西,使你能夠?qū)W⒂跒閼?yīng)用程序的邏輯編寫(xiě)代碼。
在應(yīng)用程序的邏輯中,你可以決定如何表示文件或目錄。使用不同的顏色是一種很好的方法。可以使用 colored 庫(kù)以不同顏色打印文件和目錄。
你還可以決定目錄樹(shù)生成器的深度。例如,如果一個(gè)目錄有十二層的子目錄,那么你可能決定只進(jìn)行到第五層。
如果你愿意,還可以讓用戶(hù)決定目錄樹(shù)生成器的深度。
額外的挑戰(zhàn)
因?yàn)樯傻哪夸洏?shù)的結(jié)果將在命令行上,所以你可以更進(jìn)一步。你可以讓生成器創(chuàng)建目錄樹(shù)的圖像,因此它基本上將文本轉(zhuǎn)換為圖像。
你會(huì)發(fā)現(xiàn) pillow 庫(kù)很有用。
項(xiàng)目工作建議
從事項(xiàng)目可能很困難,但是,項(xiàng)目的動(dòng)機(jī)和興趣會(huì)使它不那么令人生畏。
如果你對(duì)一個(gè)項(xiàng)目感興趣,你將能夠投入時(shí)間去研究,并找到能幫助你完成這個(gè)項(xiàng)目的庫(kù)和工具。
以下是一些建議:
-
找到激勵(lì)的源泉
-
將項(xiàng)目分解為子任務(wù)
-
研究子任務(wù)
-
構(gòu)建每個(gè)子任務(wù),一次一步
-
如果你被困住了,請(qǐng)尋求幫助
-
將子任務(wù)放在一起
結(jié)論
在本文中,你已經(jīng)看到了一些你可能會(huì)感興趣的 Python 項(xiàng)目構(gòu)想。
項(xiàng)目理念涵蓋了一系列平臺(tái),你看到了 Web、GUI 和命令行平臺(tái)的項(xiàng)目思想。
你可以選擇在不同的平臺(tái)上構(gòu)建項(xiàng)目。以 URL 縮短器為例,你可以選擇在 Web、GUI 或命令行上構(gòu)建它。
由于你是一個(gè)中級(jí)的 Python 開(kāi)發(fā)人員,這些項(xiàng)目可能非常具有挑戰(zhàn)性,但也很有趣。
使一個(gè)項(xiàng)目成功的最好方法就是開(kāi)始行動(dòng)。當(dāng)你完成項(xiàng)目,你會(huì)發(fā)現(xiàn)自己從中受益匪淺!