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

2020-12-25 機器之心Pro

選自realpython

作者:Habeeb Shopeju

機器之心編譯

參與:高璇

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

本文為機器之心編譯,轉載請聯繫本公眾號獲得授權。

相關焦點

  • 吹爆這8個Python練手小項目,輕鬆易學
    吹爆這8個Python練手小項目,輕鬆易學 作者:佚名來源:|2020-12-08 22:05
  • 這8個Python練手小項目,輕鬆易學
    知識本質上只是信息,我們最需要的知道的是,學以致用,做到什麼程度,才是我們學習的目的所在,所以練手!實幹!才是最重要的!以下就是今日推薦的簡單好實現練手神器!1.Python 語言程序設計實驗本項目對於沒有編程經驗的學生十分友好,也適合那些有其他程式語言基礎的同學。它不僅介紹了Python3的基本知識,還介紹了pep8、virtualenv、測試、項目結構和flask。3.
  • 程式設計師最愛的13個免費Python課程
    Python還可用來開發web,還有很多開發者用其編寫腳本,讓瑣碎的任務自動化。不管出於什麼原因,決定學習Python本身就很好。不管是為了什麼而學習Python,開始學習就是件非常棒的事情。學習Python是個好主意。無論你是一個初學者還是C++或Java專家,都無需擔心其派不上用場。
  • Python開發者必知的 11 個 Python GUI 庫,你用過幾個?
    Python開發者必知的 11 個 Python GUI 庫,你用過幾個? 當你使用python編寫應用程式時,你就一定要使用GUI。Python GUI的選擇有很多。目前來說,Python GUI程序庫有30多個跨平臺框架。現在就列出其我認為最好的11個.
  • 零基礎學Python,應該知道的學習路徑和經驗
    學習python的過程分為四個階段:了解python、找個例子練手、做項目、能力提升。:運算符、if語句、for語句、文件操作函數類對python有了一定的了解後,就可以去網上找幾個例子代碼,照著寫練練手,我推薦你可以從學習爬蟲開始練手,相比其他語言來說python寫爬蟲是最方便的,可以找些爬蟲的書看看,然後到github上找幾個例子照著學。
  • Python中排序算法的重要性,希爾排序 ShellSort,中級python技術
    Python中的Timsort算法,Timsort算法的優缺點,中級python技術點Python中的快速排序算法,快速排序的優缺點,中級python技術點Python中的合併排序算法,合併排序的優缺點,中級python技術點
  • 推薦 13 個 Python 新手練級項目
    但對於中級 Python 開發人員來說,很多項目要麼過難,要麼過易。本文將列出十三個適合中級 Python 開發人員練手的項目。原文連結:https://realpython.com/intermediate-python-project-ideas/本文僅做分享,若有侵權,請聯繫小編第一時間刪文Web 項目設計內容聚合器(Content Aggregator)
  • @Python 開發者,如何更加高效地編寫代碼?
    對於 Python 開發者而言,Anaconda 能省下大量時間下載和安裝模塊包、處理項目環境等問題,幫助開發者更加愉快地編寫代碼。如果你苦於給 Python 安裝各種包,安裝過程中還各種出錯。那麼我牆裂推薦——Anaconda,它可以幫助你管理這些包,包括安裝、卸載、更新。
  • 瘋狂上漲的 Python,開發者應從 2.x 還是 3.x 著手?
    很多人學 Python 並不是因為 Python 適合開發什麼軟體或者工程,而是因為 Python 擁有某個非常適合他們工作相關領域的簡單易用的工具包。所以,學 Python 2 還是 3 關鍵要考慮的是你所準備使用的模塊是否支持 3.x。黃歡:建議先學習 Python2.7, 隨後再了解 Python 3.x 與 Python 2.7 的差異部分。
  • 零基礎快速入門python教程,結合新手練習的5大項目
    I am repeatingI am repeatingI am repeating>>>適合Python初學者的5大項目在練手項目的選擇上,還存在疑問不知道要從哪種項目先下手?首先有兩點建議:最好不要寫太應用的程序練手,要思考什麼更像是知識,老只會寫寫爬蟲是無用的,但是完全不寫也不行。對於練手的程序,要注意簡化和抽象,但是如果簡化不得當的話,很容易看幾篇教程就被懶得下手了。
  • 強大的jupyter,python開發者的福音
    4.運行python文件%run python文件路徑5.強大的魔術方法例如,查看函數的運行時間%time a = np.arange(1000)[1,2,3,4,5,6,7,8])y = np.array([3,5,7,6,2,6,10,15])plt.plot(x,y,'r')# 折線 1 x 2 y 3 colorplt.plot(x,y,'g',lw=10)# 4 line w# 折線 餅狀 柱狀x = np.array([1,2,3,4,5,6,7,8])y = np.array([13,25,17,36,21,16,10,15
  • 哪種 Python IDE 最適合你?這裡有一份優缺點列表
    讀者可以參考此文列舉的 Python IDE 列表,選擇適合自己的編輯器。寫 Python 代碼最好的方式莫過於使用集成開發環境(IDE)了。它們不僅能使你的工作更加簡單、更具邏輯性,還能夠提升編程體驗和效率。每個人都知道這一點。而問題在於,如何從眾多選項中選擇最好的 Python 開發環境。初級開發者往往面臨這個問題。
  • Python基礎 | 大學小白如何入門Python程序設計
    把裡面的例程都手打一遍,搞懂為什麼。網上有一本《簡明python教程》,這本書不是非常適合零基礎初學者。(2)對書上的課後作業及其一些書上的代碼進行多多練習。去找一個實際項目練手。我當時是因為要做一個網站,不得已要學python。這種條件下的效果比你平時學一門新語言要好很多。所以最好是要有真實的項目做。
  • 哪種Python IDE最適合你?這裡有一份優缺點列表
    讀者可以參考此文列舉的 Python IDE 列表,選擇適合自己的編輯器。寫 Python 代碼最好的方式莫過於使用集成開發環境(IDE)了。它們不僅能使你的工作更加簡單、更具邏輯性,還能夠提升編程體驗和效率。每個人都知道這一點。而問題在於,如何從眾多選項中選擇最好的 Python 開發環境。
  • 可能是國內最火的開源項目 —— Python 篇
    語言近年來發展勢頭一路攀升,因此本文整理了 Python 語言中評分超過 8.0 分的幾款項目,並附上評分和收藏量,以供開發者選擇和交流,排名如下:開源 ERP 系統 GoodERP評分:8.7,收藏:74GOODERP是一個開源ERP項目,軟體採用agpl協議,版權歸代碼提交者所有,項目範圍是一組功能模塊,包括財務加進銷存的核心模塊及滿足行業特殊需求的模塊,這些模塊都以
  • 這些方法助力Python開發者提高效率
    在做準備時,我諮詢了幾個 Pythonists,他們最節省時間的技巧是什麼?答案在這裡… 1. 不使用分號 使用分號在 Python 中是可選的,對比其他面向對象語言,你不需要在每一條語句後面使用分號。 這看起來很簡單,似乎也節省不了多少時間;但一旦你的代碼量擴展到數千號,這些分號就變得分心且沒有必要鍵入。 2.
  • 零基礎學python,你需要掌握這8個技巧!
    作為這幾年火爆的python,想要零基礎起步學習,興趣愛好是首要的,什麼語言都是入門簡單,精通難。相比java,c等語言來說python極其容易入門,但是簡單的語法也正是它的缺點,靈活導致很多bug在運行過程中才能發現,導致多人協同上很難保證統一的風格。
  • 可能是最通俗易懂的Python入門資料整理和最優學習路線推薦.
    Python 這門語言是學習數據科學和人工智慧始終繞不開的一個基礎知識和技能點,我們只有點亮這個技能點才能更好的開展我們的宏圖霸業(有網友說想用Python實現自動賺錢)。廢話不多說,我們直接進入正題。在這篇文章裡,我會把所涉及的資料分為三個部分。
  • 2020年中級會計師考試《財務管理》每日一練(7月13日)答案
    2020年中級會計師考試《財務管理》每日一練(7月13日)答案 2020年中級會計考試大綱已經發布
  • 慢步學習,python庫文件概述,再來點第三方庫文件安裝的乾貨
    python是一個開源項目我們知道Python一個開源的程序設計語言。但確切的說法應該是,Python是一個開源的編程項目,而這個項目由全球開發者共同開發。就像數學一樣,全球開源,有共同的規則,有共同的元素,這樣,新的數學公式的發明和應用,也是全球共享的。在python這個開源項目裡,可以共享的成果,都以庫/模塊的形式存在。