Python 教學系列文 (7) - Lambda、套件、Git 簡介
HackMD 完整版請點我 LambdaLambda 又叫做匿名函數,當我們需要快速簡潔的撰寫一個函數,但又不想幫他命名時(意即這個函數可能只會用一兩次),我們就會使用 Lambda 來幫助我們。Lambda 在使用上依然可以給予名稱,但非必要,函數內容也必須在一行內結束。 123456>>> print((lambda x : x ** 2)(10))100>>> print((lambda x, y: x * y)(4, 5))20>>> print((lambda x: x[1])([1,2,3]))2 與其他函數的搭配使用 filter() 123numbers = [1,10,100,1000,10000]bignums = filter((lambda x: x > 50), numbers)print(list(bignums)) 12Output:[100,1000,10000] map() 123numbers = [1,10,100,1000,10000]doublenums = map((...
Python 教學系列文 (6) - 檔案讀取、例外處理、斷言
HackMD 完整版請點我 檔案讀取(File I/O)在 Python 中,很常會用到檔案相關的操作,舉凡文字檔(.txt)、CSV檔(.csv)、圖片檔(.png, .jpg…)、影片檔(.mp4, .avi…)等等,都會需要讀取、寫入檔案。這邊先以文字檔作為示範,僅簡單講解基礎操作,其他檔案如圖片、影像有些會有專門的 library 來處理。 test.txt:This is a test txt file.This is another line. 全部讀入 123456file = open('test.txt','r')data = file.read()file.close()print(data)data = data.split('\n')print(data) 1234Output:This is a test txt file.This is another line.['This is a test txt file.', 'This is anoth...
Python 教學系列文 (5) - 函數、其他常見資料結構
HackMD 完整版請點我 Python 基礎 (2)函數(Function)我們以前寫 print(‘Hello’) 時,其實就是在呼叫函數,這個函數會幫我們把我們傳入的 ‘Hello’ 印出來。其他像是 range()、type()、input() 等也都是函數,各有不同的用途。 我們也可以透過特定語法來定義自己的函數,透過函數可以幫我們達成「模組化」,省去重複的 code 同時提供更多彈性來執行類似的動作。 一個函數包含名稱、本體、輸入(Input)與輸出(Output),後兩者又叫做參數(Parameters)與回傳值(Return Values)。有時我們也會在函數最一開始的地方加入註解,來說明函數的使用方式以及參數 / 回傳值類型。 以下圖為例,輸入是蘋果,輸出是切半的蘋果,函數 h 的作用是把蘋果切半。 名稱 用關鍵字 def 來宣告函數,名稱接在 def 後面 名稱通常會取與函數作用相關,便於使用者理解函數功能 使用函數時,用其名稱來呼叫函數 本體 把要執行的程式碼包在函數本體中 有時會在本體前面加上註解,用以說明函數功能 說明最好包含:輸入、輸出、...
Python 教學系列文 (4) - 清單、CSV 檔案
HackMD 完整版請點我 清單(List) 清單是 Python 最常用、也最好用的資料類別,具順序性 甚麼東西都可以裝,裝的東西也可以不同,也可以用清單包清單 想成一個百寶袋,甚麼都可以塞,再拿出來 32位python的儲存上限是536870912 個元素 64位python的儲存上限是1152921504606846975 個元素 前面提到的字母陣列其實概念跟清單很像 12345678910111213141516171819202122232425262728293031>>> l = [1, 1.0, 10, "test"]>>> print(l[0])1>>> print(l[2])10>>> l[2] = 100>>> print(l[2])100>>> print(l[-1])"test">>> print(len(l))4>>> l.append("123"...
Python 教學系列文 (3) - 條件判斷、迴圈、字串處理
HackMD 完整版請點我 Python 基礎 (1)條件判斷(Conditionals)1234567price = int(input())if price < 100: print("It's cheap.")elif price >= 100 and price < 200: print("It's okay.")else: print("It's too expensive!") 若…則… (if) ,否則若…則… (elif) ,若以上皆非則… (else) if 跟 else 是一組的,後面要放條件判斷 or 布林值,elif 可有可無 底下的指令則需縮排,讓 Python 知道哪些是條件成立需要執行的 裡面還可以再包 if-else (巢狀條件判斷) 12345678910if ... if ... ... else ...else ... if ... ... else...
Python 教學系列文 (2) - 寫程式的流程、電腦架構、二進位制、排版方式
HackMD 完整版請點我 寫程式的流程(Workflow) Debug:在我們遇到各種 Error 時,需要去檢查程式哪裡寫錯 有時候是語法錯、有時候是邏輯錯… 整體的寫程式流程: 電腦架構非常簡易版的架構圖如下: Input:鍵盤、滑鼠、觸控螢幕、麥克風等等 Output:螢幕、喇叭、印表機等等 Storage:硬碟、光碟機等等 CPU(中央處理器):負責電腦的大部分運算 Memory:電腦內暫存的記憶體空間 補充 - GPU(顯示卡):負責遊戲、3D繪圖、機器學習等等運算若對這個有興趣的話,可以去查「計算機結構」或修相關課程 二進位制 電腦使用二進位制來儲存數值,簡易的對照如下圖 若對這個有興趣的話,可以去查「數位邏輯」、「電路學」或修相關課程 排版方式(Formatting)一些排版準則如下: 通常在運算元前後會空白 在每個區段的 code 前後會空行,才不會全部擠在一起不好分辨 變數命名要有意義,讓別人也看得懂你在寫什麼 加入註解提高程式易讀性,並說明撰寫邏輯、使用方法等等 寫程式除了讓他可以執行以外,讓別人看懂也是一件很重要的事情。當未來需要進...
Python 教學系列文 (1) - Overview、環境建置、基礎語法
哈囉!這次來發一些關於 Python 的教學文章,會有這個系列文,主要是因為前陣子接了一個家教,就順便把辛苦整理的自編講義一起放上來了,內容雖然不深,但也涵蓋了初學 Python 所會碰到的各主題,若完全對 Python 不了解的話,這個系列文應該可以給你一些概念,完成後若想再自我進修也能大概有個方向。 此系列文預計會分十篇左右,內容涵蓋基礎語法、迴圈、函數、套件、類別等等主題,皆有範例程式碼可以參考,基本內容都會涵蓋到,不過因為我原本是做講義用,文字部分不會太詳盡。另外,雖然公開在網路上,但希望各位轉載還是標註一下來源,畢竟也是我辛辛苦苦整理的心血呢。最後,有興趣的話,我還有在接學生(偷打廣告 XD)。 HackMD 完整版請點我 Overview程式語言分為高階語言、組合語言、機器語言等等,Python屬於高階語言的一種。機器語言與組合語言直接控制電腦硬體,但難以閱讀與開發;高階語言易於閱讀與開發,但需要「翻譯」給電腦聽。 來自 Python 官方網站的介紹:Python 是一種易學、功能強大的程式語言。它有高效能的高階資料結構,也有簡單但有效的方法去實現物件導向程式設計。...
安裝 Windows 與 Linux 雙系統
繼上一篇選完電腦配件、下完單取完貨之後,拿回家第一件事就是裝作業系統啦,不然開機只有 BIOS 介面,都沒辦法使用呢。我對這塊一開始也是完全不熟,還好在慢慢摸索跟問朋友之後,花個一兩天總算是都搞定了。本文會簡單分享我裝雙系統的過程,還有途中遇到的一些小困難,順便也會分享一些實用的資源給大家。 本文圖少連結多,因為拍圖太麻煩了,還請見諒,提供的連結中很多圖跟影片,可以去那邊看。 事前準備其實一般來說,買電腦時若有順便加購正版的 Windows,店家通常會幫你一起裝好再交給你,但我因為想省一些預算(正版真的太貴了,我預算都花在顯卡上嗚嗚,但這樣還是不太好大家不要學),所以我並沒有購買,而是打算自己上網研究如何自己安裝。 而 Linux 本身是個免費且完全開源的作業系統,也很推薦大家去使用,但使用的大多是有工作需求等等,或是想自己對作業系統有更多的操作及掌握,不然一般消費者主要還是用 Windows 居多。我自己本身是有學業需求,加上我需要 Windows 讓我玩遊戲(不然就白白浪費我的顯卡了!),所以決定以雙系統的方式,買兩顆硬碟一個系統各一顆,也建議雙系統最好買兩個硬碟,不然搞磁碟...
新手自己配電腦 - 64k 跑遊戲 + 深度學習用桌機
先說結論,最近在學習如何選購桌電配備,對於桌電領域完全不熟的我,研究了好一陣子之後,最後用 64k 的價格,配了一臺效能令我十分滿意的桌電。身為資工所的宅宅學生,沒有一臺強大的桌電用來打遊戲、跑模型,那怎麼說的過去呢! 好啦,其實事情緣起是這樣的:去年十一月在尋找指導教授,跑訪各實驗室時,都會順便詢問學長姐實驗室的硬體資源如何,畢竟研究所的課對硬體要求頗高,如果硬體不好應該會過得很痛苦。雖說資工所大部分的實驗室硬體資源都不錯,有些一人一張 3090,甚至還有聽說正要添購 40 系列的,然而,我最後找的教授的實驗室,共用硬體竟然只有 4 張 10 系列顯卡,真的是完全沒辦法用啊!當初學長就有跟我講過這件事,最後根據整體考量下還是硬著頭皮選了,所以自己組一臺電腦就成了必須(順便組起來玩遊戲也方便),也因此才有今天這篇文章的產出。 我的需求、預算與配置在我需求的部分,我最主要是學業所需,兩年的研究所內我預計會需要跑不少的深度學習模型,所以效能不能太差,在 CPU 與 GPU 方面皆是,特別是顯卡的 VRAM 不能太低;而預算方面我預計這臺可以用個五到十年,所以抓 60k - 70k ...
關於我在英國伯明罕大學交換的這半年
距離我抵達英國伯明罕剛滿一年,至今依然超級無敵懷念在歐洲生活的每一天,想說趁著還沒有完全忘記,再把一些想說的隨意記錄在這裡。其實我已經在我的 交換心得 裡講的很詳細了,還沒看過的話可以先進去看看,但因為心得中大多走攻略取向,有點像交換懶人包的概念,所以我打算在這裡再稍微補充一些其他東西,如果想看更多圖片也可以到我的心得裡喔! 我從小出生長大都在臺北,大學也在臺北念所以都與家人同住,雖然臺灣的每個縣市都有去過,也去過中國、日本幾個地方,但從沒有獨自離家超過一週,頂多就是參加個四五天的營隊,或去南部玩個兩三天之類的。也因此這次的交換機會很難得,對我來說是全新的體驗,獨自一個人離家前往探索未知的歐洲,加上行前準備都是我自己一個人處理,可以說是既害怕又興奮。 題外話,抵達伯明罕的第一天就出了點小問題,先是不知道怎麼買公車票(最後沒買票司機就讓我搭了哈哈),抵達宿舍後又因為是假日所以沒有人在,導致當天差點沒地方住,加上已經搭了超過 24 小時的飛機超級疲倦。還好去之前就先聯繫上已經在那邊的中國室友,她很熱心的幫助我,還邀請我一起吃晚餐;以及友善的黑人警衛小哥的大力協助,才算是順利找到地方...









