學習 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、大數據、項目經理學習羣,和優秀的人一塊兒成長!