'給中級Python開發者的13個練手項目,適合你不?'

"

選自realpython

作者:Habeeb Shopeju

機器之心編譯參與:高璇

"

選自realpython

作者:Habeeb Shopeju

機器之心編譯參與:高璇

給中級Python開發者的13個練手項目,適合你不?

學習 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/

"

相關推薦

推薦中...