PY 筆記 | Hello, Python

閱讀時間約 8 分鐘

最近晚上閒來無事,所以開始在 Coursera 上學 Python,雖然才剛結束 1/5 的課程,但只能說,同樣身為直譯式語言,從 JavaScript 接 Python,在撰寫邏輯上沒什麼太大的銜接困難。

要寫 Python 的方式有很多,像我一個當數據工程師的朋友式直接寫在 AWS lambda 或 Notepad++ 中,而我則是選擇沿用 VScode 來做為編輯器。

如何在本地端安裝 Python,我之前寫過一篇關於 AWS 部屬的文章,裡面有寫到,可以參考一下。安裝完後只要在 VScode 安裝 Python 套件就能順利在 VScode 寫 Python 了。

raw-image

然後在 VScode 中的設定更改一下下圖的設定,不然 Python 中的 input 語法會找不到輸入的地方。

raw-image



Python 語法

從 JavaScript 過來寫 Python,比較需要習慣的是定義區塊程式碼的差別。比如判別式 if-else,在 JavaScript 中我們會用 {...} 包起來作為一個區塊:

if(A){
// do something
}else{
// do another thing
}

但在 Python 中,是使用縮排來定義區塊程式碼,所以 if-else 會變這樣:

if A:
# do something
else:
# do another thing

原本在 JavaScript 為了提高程式碼可讀性的縮排到了 Python 被賦予有意義的使命。



判別式

判別式是寫程式的靈魂之一,上面已經介紹了最基本的判斷式寫法,對於那些需要做多項判斷的事件,比如下列範例的依據使用者成績輸入來回傳成績等第,可以這樣寫:

grade = input('enter your grade:')
grade = float(grade)

if grade > 1 or grade < 0:
print('you must enter the number between 0-1')
elif grade >= 0.9:
print('A')
elif grade >= 0.8:
print('B')
elif grade >= 0.7:
print('C')
elif grade >= 0.6:
print('D')
else:
print('F')

在這裡解釋一下,input 允許使用者輸入一段內容,默認型態是字串,所以會用 float 轉成浮點數才能進到判別式中一層層做比較。



函式

同樣,我們在 JavaScript 中會用 function 來定義函式,但在 Python 中必須使用 def 來定義函式:

def computepay(a, b):
ta = float(a)
tb = float(b)
if ta < 40:
return ta * tb
else:
return 40 * tb + (ta - 40) * tb * 1.5

hrs = input('enter hours:')
rate = input('enter rate:')
print(computepay(hrs, rate))

向上述就透過 def 和縮排定義了一個函式,並在 print 中呼叫了這個函式。



迴圈

Python 的迴圈同樣有 whilefor 迴圈,針對不同需求有不同應用。while 適合在不知道循環次數,只想針對某一個條件一直執行程式碼時使用;for 就適合用在規定尋換次數下執行程式碼。

我們可以寫個簡單的 while 迴圈,根據使用者的輸入來決定迴圈是否繼續執行:

while True:
try:
num = input('enter number')
if num == "done":
break
else:
trNum = float(num)
if largest == None and smallest == None:
largest = trNum
smallest = trNum
elif largest < trNum:
largest = trNum
elif smallest > trNum:
smallest = trNum
except:
print('Invalid input')
continue
print('Maximum', largest)
print('Minium', smallest)

上述的意思是,當使用者輸入 done 時,就透過 break 跳出迴圈繼續執行之後的 code,而如果輸入的是數字就一直執行這個迴圈,直到使用者輸入 done 為止。

在上述還可以看到一個 try-except 的用法,這是 Python 中做例外處理的語法,是為了避免程式碼出錯而程式運行中斷而產生的語法。

當我們不寫 try-except,把上面的 code 改成這樣:

largest = None
smallest = None

while True:
num = input('enter number')
if num == "done":
break
else:
trNum = float(num)
if largest == None and smallest == None:
largest = trNum
smallest = trNum
elif largest < trNum:
largest = trNum
elif smallest > trNum:
smallest = trNum
print('Maximum', largest)
print('Minium', smallest)

程式碼仍然可以執行,但如果用戶今天輸入的內容無法轉為數字,比如輸入 "ABC",因為 float 無法將其轉為浮點數,所以 Python 會噴出一段錯誤 ValueError: could not convert string to float: 'ABC',並中斷程式執行。

而靠著 try-except,我們可以讓程式碼優先執行 try 區塊中的邏輯,當如果出現錯誤才去執行 except 中的事情。

一開始的 while 迴圈中的 try-except 就是跟 Python 說:如果出現錯誤 (使用者輸入無法轉成浮點數的內容),就印出一段訊息,並透過 continue 重新執行迴圈。

最後看一下 for 迴圈,基本上只要定義好執行次數 (範圍),就領會 for 迴圈的精隨了,例如印出最經典的 1-5 數字:

for i in range(1, 6):
print(i)



參考資料

  1. Python for Everybody
  2. Python: Visual Studio Code (VS code) 程式碼input(),終端機卻無法輸入資料且顯示亂碼,該如何設定?
avatar-img
18會員
37內容數
這個專題用來存放我在學習網頁開發時的心得及知識。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Jeremy Ho的沙龍 的其他內容
Vue 筆記,Nuxt 簡介
Vue3 筆記,指令進階篇
Vue 筆記,Nuxt 簡介
Vue3 筆記,指令進階篇
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
今天這篇文章要來教各位另一種製作音樂房間的方式 使用這個方式的話不需要為每一個歌曲單獨建立畫面或是代碼 算是一個比較方便的一種方式 看各位想要用什麼方式你可以把 track 改成任意其他名字,但注意如果更改的話之後的代碼也要改成你更改成的那個名字會讓 Renpy 自動選擇歌曲封面
今天這篇文章要來教各位另一種製作音樂房間的方式 使用這個方式的話不需要為每一個歌曲單獨建立畫面或是代碼 算是一個比較方便的一種方式 看各位想要用什麼方式
Thumbnail
安安~今天我要和各位展示如何自製一個音樂房間 今天的音樂房間大概會長這樣 因為一些建議製作了另一版的音樂房間教學你需要準備的東西: 1x 背景圖片 幾首你打算播放的歌 幾個作為切換歌曲的按鈕 看你準備了幾首歌,也準備同樣數量的封面圖加入音樂建立單獨歌曲畫面建立新畫面製作解鎖音樂功能
安安呐~今天這篇教學要來教各位如何在 Renpy 裡做出打字特效 其實這個非常簡單做法的說,但因為很多人詢問所以就還是決定寫一篇惹 為什麼說很簡單呢~?
今天要給各位帶來另一個關於 GUI 自訂的教學 這次的重點也放在我們重要的封面上面! 就像我們這篇文章的標題寫的 如果你希望讓封面在有存檔時 (非第一次打開遊戲) 更換的話就可以使用這個教學裡的方法拉! 這個教學我們會用到持久性變量 和 if語句
為甚麼我的音樂,音效,聲音沒有辦法正常撥放? 如果你把你的音檔放在 game/audio 裡面的話你可以把你的代碼改成 play sound(/music/voice) 如果這還是不能解決的話你也可以在檢查看看你的檔案是否是renpy可以支援的,如果不是的話可以使用網路上的各種網頁/軟體轉檔窩
這篇教學呢會介紹如何自訂 loading 畫面! 在開始之前先讓你知道這個功能基本上已經用不到囉 因為 loading 畫面只有在畫面在等 作法 1: 系統自動顯示等待畫面 作法 2: 手動強制顯示等待畫面 將圖片取名為 presplash.png
這篇會教你如何在 Renpy 裡面使用 if ! If 的使用方式 這節希望可以讓你理解甚麼是 If 和何時
Thumbnail
這個教學是關於探索地圖的教學 教學包含了 使用 imagemap 出現提示 建立可互動式地圖 解謎系統 設定 / 使用變量 根據成功或失敗出現對應的畫面 這篇會稍微比較長也比較複雜ㄧ點如果中間有甚麼不懂的歡迎私訊我!
Call 語句​ 它可以用來跳轉劇情 使用 call 可以從劇情A -> 跳到劇情B -> 之後再跳回去劇情A 範例: call next_s
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
今天這篇文章要來教各位另一種製作音樂房間的方式 使用這個方式的話不需要為每一個歌曲單獨建立畫面或是代碼 算是一個比較方便的一種方式 看各位想要用什麼方式你可以把 track 改成任意其他名字,但注意如果更改的話之後的代碼也要改成你更改成的那個名字會讓 Renpy 自動選擇歌曲封面
今天這篇文章要來教各位另一種製作音樂房間的方式 使用這個方式的話不需要為每一個歌曲單獨建立畫面或是代碼 算是一個比較方便的一種方式 看各位想要用什麼方式
Thumbnail
安安~今天我要和各位展示如何自製一個音樂房間 今天的音樂房間大概會長這樣 因為一些建議製作了另一版的音樂房間教學你需要準備的東西: 1x 背景圖片 幾首你打算播放的歌 幾個作為切換歌曲的按鈕 看你準備了幾首歌,也準備同樣數量的封面圖加入音樂建立單獨歌曲畫面建立新畫面製作解鎖音樂功能
安安呐~今天這篇教學要來教各位如何在 Renpy 裡做出打字特效 其實這個非常簡單做法的說,但因為很多人詢問所以就還是決定寫一篇惹 為什麼說很簡單呢~?
今天要給各位帶來另一個關於 GUI 自訂的教學 這次的重點也放在我們重要的封面上面! 就像我們這篇文章的標題寫的 如果你希望讓封面在有存檔時 (非第一次打開遊戲) 更換的話就可以使用這個教學裡的方法拉! 這個教學我們會用到持久性變量 和 if語句
為甚麼我的音樂,音效,聲音沒有辦法正常撥放? 如果你把你的音檔放在 game/audio 裡面的話你可以把你的代碼改成 play sound(/music/voice) 如果這還是不能解決的話你也可以在檢查看看你的檔案是否是renpy可以支援的,如果不是的話可以使用網路上的各種網頁/軟體轉檔窩
這篇教學呢會介紹如何自訂 loading 畫面! 在開始之前先讓你知道這個功能基本上已經用不到囉 因為 loading 畫面只有在畫面在等 作法 1: 系統自動顯示等待畫面 作法 2: 手動強制顯示等待畫面 將圖片取名為 presplash.png
這篇會教你如何在 Renpy 裡面使用 if ! If 的使用方式 這節希望可以讓你理解甚麼是 If 和何時
Thumbnail
這個教學是關於探索地圖的教學 教學包含了 使用 imagemap 出現提示 建立可互動式地圖 解謎系統 設定 / 使用變量 根據成功或失敗出現對應的畫面 這篇會稍微比較長也比較複雜ㄧ點如果中間有甚麼不懂的歡迎私訊我!
Call 語句​ 它可以用來跳轉劇情 使用 call 可以從劇情A -> 跳到劇情B -> 之後再跳回去劇情A 範例: call next_s