Python 程式設計 - 初階

用 Python 學蒙地卡羅方法/模擬

如果說有一種方法能像奇異博士那樣看到 14,000,605 種未來,那大概就是蒙地卡羅方法了。

在接觸蒙地卡羅方法之前,我曾以為它是一種神奇的演算法。但深入了解後才發現,蒙地卡羅方法其實是一種簡單、直觀且實用的工具!

本文將介紹蒙地卡羅方法,並使用 Python 進行實際演練,從計算 π 值到模擬台股的長期投資,幫助大家從理論到實務全面掌握!

Posted on  Sep 9, 2024  in  Python 程式設計 - 初階  by  Amo Chen  ‐ 5 min read

用 Python 實作 Floyd-Warshall 演算法:從最短路徑到尋找最便宜機票

Floyd-Warshall 演算法,又稱佛洛伊德演算法,主要用於找出圖(graph)中所有頂點之間的最短路徑,它也能用來偵測圖中是否存在閉環(cycle)。

本文將使用 Python 學習 Floyd-Warshall 演算法,並且以找出城市與城市之間最便宜機票組合作為應用範例,讓讀者對 Floyd-Warshall 演算法有深入的了解。

Posted on  Aug 16, 2024  in  Python 程式設計 - 初階 , 演算法  by  Amo Chen  ‐ 4 min read

從 Python 的 random.shuffle() 學 Fisher-Yates Shuffle / Knuth Shuffle 演算法

最近接觸了一些牌類遊戲的開發,發現如何洗牌也是 1 個學問,所以特別查了一個重要的演算法 Fisher-Yates Shuffle / Knuth Shuffle ,發現 Python 的 random.shuffle() 也使用相同的演算法實作,所以特別將 Fisher-Yates Shuffle / Knuth Shuffle 實作細節與視覺化做出來,希望可以讓不熟悉的人也能迅速上手。

Posted on  Jul 4, 2024  in  Python 程式設計 - 初階 , 演算法  by  Amo Chen  ‐ 3 min read

Python 好用套件介紹 - structlog

大家初次使用 Python 的 logging 模組時,應該都跟我同樣困惑過,例如下列程式碼:

import logging

log = logging.getLogger(__name__)
log.info('Hello')

我們會預期上述程式碼要列印 Hello 的字串,然而事實是不會。

這是由於 Python logging 模組預設的 log level 為 WARNING , 所以只有 WARNING , ERROR 以及 CRITICAL 才會顯示。

所以使用 logging 模組通常都要額外做一些設定才行,這不免需要讀一下 Python 官方文件。(這不是 Python 的問題,只是設計哲學不同)

那麼,有沒有什麼套件比起內建的 logging 模組更直覺好用呢?

答案是「有」,那就是本文要介紹的 structlog 套件。

Posted on  Aug 30, 2023  in  Python 模組/套件推薦 , Python 程式設計 - 初階  by  Amo Chen  ‐ 4 min read

Python 好用套件介紹 - better-exceptions

相信大家學寫程式都有相同的一段經驗,那就是看不懂例外錯誤(exceptions)訊息的意思,你可能每個單字都認識,但組合起來就像天書一樣難以理解⋯⋯。

如果有更容易理解的例外錯誤訊息的話,相信會減輕大家在學習與除錯的痛點!

本文要介紹的 better-exceptions 套件,是一個不管新手、老手都適用的套件,它改良了 Python 的例外錯誤訊息,把錯誤當下的變數值一併顯示在例外錯誤訊息當中,就這一個貼心的舉動,大大改善大家在學習與除錯的體驗。

是一個值得推薦與擁有的套件!

Posted on  Aug 25, 2023  in  Python 模組/套件推薦 , Python 程式設計 - 初階  by  Amo Chen  ‐ 3 min read

制霸 Python f-string 各種格式使用方法

開發程式時,字串的輸出經常會需要做一些格式(format),例如數字加上千分位符號、百分比,又或者需要置左、置中、置右對齊等等,這些需求 Python 也都有照顧到,本文將介紹 Python 如何做字串的格式化以及各種範例,讓大家都能夠輕鬆完成字串的格式化!

Last updated on  Apr 9, 2024  in  Python 程式設計 - 初階  by  Amo Chen  ‐ 5 min read

Python 單雙星號(* & **)解說

Python 內將函數的參數分為 keyword argument 以及 positional argument, 這 2 者的差異在官方文件中有清楚說明,同時這 2 種分別支援單星號 * 與雙星號 ** 的用法,是 Python 開發者一定要熟知的用法。

本文將詳細介紹說明。

Posted on  Sep 19, 2022  in  Python 程式設計 - 初階  by  Amo Chen  ‐ 4 min read