code

2016年12月10日 星期六

用Sublime當Python IDE編譯器

先到Sublime官網下載


開啟Sublime後,輸入CTRL + `  (數字1左邊那個)


在下方指令列輸入以下字串,安裝Pakcage controll:
import urllib.request,os,hashlib; h = 'df21e130d211cfc94d9b0905775a7c0f' + '1e3d39e33b79698005270310898eea76'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( 'http://packagecontrol.io/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join( ipp, pf), 'wb' ).write(by)

之後選擇Preferences -> Package Control


輸入install選擇'Install Package'


然後輸入你想安裝的Pakcage。Sublime有許多套件可以用來開發Python,你可以Google "Sublime Python"來搜尋相關資訊。這邊我選用Anaconda。


之後進入Preference -> Package Settings -> Anaconda -> Settings - Default進行設定。


許多人會設定這兩個參數
"complete_parameters": true,
"complete_all_parameters": true,

引用函數的時候會自動幫你填寫參數。我沒有使用,因為覺得使用print()的時候列出一堆沒有用到的參數,要再砍掉很煩。


另外我會設定
"anaconda_linting": false,
當這個值是true的時候,你會發現出現一堆白色邊框

設定false就會不見。

最後,寫好程式碼要編譯,輸入CTRL + b即可。

Python: for-else



最近剛接觸Python, 碰到了之前其他程式語言沒有的for-else語法,紀錄一下。

for-else的else內容,主要是執行完for之後會執行的。
例如:

輸出是:
0
1
2
3
4
End for

可以看見先執行完全部的print(n)之後,等for結束後再執行else內容。

如果for內有break跳出的話,不會執行else內容。
例如:

輸出是:
0
1
2
3

在n==4的時候break,所以沒有印4與5,並且else內容也沒印了。

那麼,for-else會用在什麼時候呢?目前想到的是,處理for都沒有想要的結果的時候。例如,我要在尋找某個數字,如果找到就印出來,沒找到就顯示找不到。
以前我會用這種寫法:

多一個flag紀錄是否有找到,並且在後面要有一個if-else判斷。

現在不需要,直接融合在一起:


另外,Python是很注重tab的語言,很多時候少了tab會有error或者出現不一樣的結果。for-else也是。

輸出是:
沒找到
沒找到
沒找到
沒找到
我找到了4

else前面多了tab縮排,這時候會被判斷程if-else與法而不是for-else。

剛學python,只想到這樣,如果有更實用的方法可以提供喔!