通過範例學習如何優化Python命令行界面(下) — 好文分享

林品融
Taiwan Code School
Published in
3 min readJan 16, 2019

{翻譯至:https://blog.sicara.com/perfect-python-command-line-interfaces-7d5d4efad6a2}

讓我們破解密碼!

你現在是駭客:你想解密用凱撒密碼加密的秘密文本,但你不知道密鑰。

一個簡單的策略可能是使用所有可能的鍵調用我們的解密函數25次,並讀取所有生成的文本,尋找有意義的文本

但由於你聰明而懶惰,你寧願自動化這個過程。 在所有這25個文本中選擇最可能的原始文本的方法是計算所有這些文本中的真實英語單詞的數量。 讓我們使用PyEnchant套件:

應顯示即時進度條

使用我使用的10個單詞的示例文本,腳本大約需要5秒鐘來輸出解密的文本。 這是很正常的,考慮到它必須檢查25個值,如果它們屬於英語詞典,則為10⁴個單詞。

想像一下,你想解密一個包含10個單詞的文本,顯示出任何結果需要50秒,這對用戶來說可能非常令人沮喪。

這就是為什麼原作者建議應顯示即時進度條,特別是因為它很容易實現。

以下是顯示進度條的相同腳本:

你看到有什麼不同嗎? 發現並不容易,因為差異由4個字母組成:TQDM。

這是Python套件的名稱,這是其唯一類的名稱,您可以使用它來包裝任何iterable以顯示相應的進度。

for key in tqdm(range(26)):

這將出現了一個美麗的進度條。 就個人而言,原作者仍然覺得這樣做太好了。

除此之外,click還提供了一個類似的實用程序來顯示進度條(click.progress_bar),但我發現外觀的可讀性較差,而且要編寫的代碼不那麼簡潔。

最後,原作者希望他已經說服您為改進腳本的開發人員體驗做出更多努力。

如果你們中的一些人有你在自己的腳本中使用的其他建議或提示,請不要猶豫,分享它們!

想要學習python? 別忘了點擊以下按鈕!

--

--