很高興自己在鐵人賽中已經走了一半的路程了,
本篇介紹適合的線上程式練功平台。
在這邊我則推薦codeWars做為練功平台,
(網址:https://www.codewars.com/)
你只要會註冊一個帳號即可上CodeWars練習了,
該平台為英文,讓你練程式兼練閱讀英文,
如註冊帳號有困難者,可參考這篇教學。
進入平台後,你可以選擇自己想練習的語言,
(由於本系列就是教python語言,先選python)
Codewars的題目稱為Kata,題目分級很細,
細分至八個等級,數字愈小表示等級愈高。
一開始建議從8~6級的題目練起,
這級數的題目大多只是小菜一碟,
但對於熟悉想要熟悉python精簡語法者無非是非常好的途徑,
當在Codewars解開問題時,
便可以看到其它人跟自己同樣是python語言解答,
並且最佳解法是參與者共同票選出來的,
通常看到的解答也都是python精簡語法的展現,
故Codewars蠻適合做為各位「路遙知碼力,日久練成精」的輔助學習。
在Codewars解開問題後能看到其它好解答的機制,
也很好的克服了一般你在其它OJ上看不到別人解答而有點閉門造車研究的感覺,
有可能當你在Codewars思索一番後,
看到更好的解答,
會有「哦,原來還有這麼漂亮的解法」的驚呼吧。
究竟Codewars如何讓自己成長,
這邊舉一個今天隨意看到的8級的題目聊聊,
此題要定義一個函數
def set_alarm(b1, b2):
pass
我們要讓函數返回一個布林值,
只有當b1
為True
且b2
為False
我們才返回True
,
其餘狀況返回False
。
這題目夠簡單吧?
不過假設你對布值運算的了解不夠深入,
你可能就順手寫下這樣的程式碼了:
def set_alarm(b1, b2):
if b1==True and vacation==False:
return True
else:
return False
但是當你按下summit按鈕後,
你會發現其實大家投票的漂亮解答是這個:
def set_alarm(b1, b2):
return b1 and not b2
或許你便能從別人更加精簡或巧妙的解法,
開拓自己的想法