這題沒什麼難度,最大的難度是知道公式長怎樣,有人提供了那這邊就不補充(公式連結)
然後根據未知數的位置進行不同的計算
直覺寫法是根據 -1 的位置寫一大堆 if,例如這樣
idx = expr.index(-1) |
但這寫起來也太囉嗦了,每一個分支條件都只是在比較 -1 的位置,寫一堆長相差不多的表達式
至少對我來說是很囉唆
--
在比較新的 python 版本中(3.10後),可以使用 match...case... 語句,作用類似 c++ 的 switch...case...
像這樣
idx = expr.index(-1) |
這樣寫起來就會好看很多,增加一點可讀性
--
But
ZeroJudge 的 python 版本只有到 3.6,沒有 match...case... 這種語法,該怎麼辦呢?
這時候就可以利用到另一個特性: list 的元素可以放置任意類型的物件
什麼意思?
我們都知道 list 裡面可以...
放數字,例如: [1, 1, 4, 5, 1, 4]
放字串,例如: ["你是一個", "一個一個一個", "嗯", "哼", "啊啊啊啊啊"]
放 list ,例如: [[1, "(確信)"], [2, "困惑"]]
若你不知道,那你現在知道了。
只要是物件,無論什麼類型都可以放進去
這時候再引入一個觀念: python 的一切都是物件
int 是物件
str 是物件
list 是物件
...
那函數呢?
函數也是物件,當然也可以放在 list 裡面
可以寫成像這樣的形式: [函數1, 函數2, 函數3, ..., 函數n]
實際使用時直接抓位置就好,例如一個簡單的加減乘除
clac = [ |
使用時就像範例那樣,在後面補括號,把要傳入的參數放進去即可
這樣就可以不寫任何 if 處理各種狀況了
參考答案: gist(python)