前幾年因為工作方面的需求,花了一些時間自學Python,應用於網站爬蟲與資料分析,但近期由於職務的轉換,Python的實作機會減少了許多,對於code撰寫的敏感度也因此降低不少,趁上個月看到
勞動力職能發展協會官網有一門新課程
「Python大數據資料探勘分析應用班」正在線上招生,想說既然政府與公司都有補助,二話不說就報名參加。總共為期54小時的課程,還頗扎實的(九週的周末假期直接消失不見😱),可是難得能趁此機會,重新熟悉一下Python程式的撰寫,這樣的小犧牲應該也很值得,當然,我也想透過自我的線上演練,跟各位朋友逐步分享上課的學習成果,有興趣的朋友,就跟我一起來探索Python的精采世界吧!
input()函式與字串插補
首先,我們來點簡單的熱身習題,了解一下Python的基本運算應用:
#輸入input()
#輸出print()
name = input("請輸入您的姓名:")
print(name)
input()函式會讓程式暫停,等待使用者自行輸入一些文字,python在取得使用者的輸入文字後,會將輸入的文字存到一個string變數型式。
輸出結果:
請輸入您的姓名:趙鐵柱
趙鐵柱
另一方面,假設我們想要把輸出結果,與字串做結合,轉變成一段比較具有意義的文字內容,這時候就可以使用「字串插補」的功能,範例如下:
print(f"您的姓名是:{name}")
輸出結果:
您的姓名是:趙鐵柱
結合上面觀念的運用,範例如下:
chinese = input("請輸入國文成績:")
english = input("請輸入英文成績:")
sum = chinese + english
print(f"國文成績是{chinese},英文成績是{english},總成績是{chinese + english}")
假如我們國文成績為30分,英文成績為70分,輸出後的結果為:
請輸入國文成績:30
請輸入英文成績:70
國文成績是30,英文成績是70,總成績是3070
疑,奇怪?怎麼跟我們預期的加總結果不太一樣,這是初學者很容易犯的錯誤,前面剛剛有特別提到,input()函式輸出的結果是包裝成string格式,所以正確的code應該還要將上述的變數轉換成數值格式,而為了避免成績還可能帶有小數點,所以使用eval()函示會最保險(eval()函示可以直接將輸入的字串,轉換成可執行的運算格式),所以修正後的寫法應該為:
chinese = eval(input("請輸入國文成績:"))
english = eval(input("請輸入英文成績:"))
sum = chinese + english
print(f"國文成績是{chinese},英文成績是{english},總成績是{chinese + english}")
假設這次國文成績輸入為67.5分,英文成績輸入為73.8分,打印出的正確結果為:
請輸入國文成績:67.5
請輸入英文成績:73.8
國文成績是67.5,英文成績是73.8,總成績是141.3
沒錯,這下子就是我們要的計算結果了!
算術運算子的順序問題
第二個基礎觀念,在Python上進行數學運算時,還要特別注意各運算子的優先順序(operator precedence),優先順序由高至低如下圖:
還不太懂沒關係,立刻進行幾個簡單的案例,示範如下:
-5 ** 2
要先進行指數運算,接著才把負值加上,所以答案為-25。
(-5) ** 2
有括號的優先順序最大,所以這邊的答案就為25。
2 * (1 + 2) ** 2 - 2 ** 2 * 2
可分為前後兩部分來計算,前半部的(1+2)=3,3的二次方為9,9再乘以2等於18;後半部的2二次方為4,4再乘以2等於8,所以兩相減之後的答案為10。
綜合上面的觀念,來解決一個小學的數學考題,假如我們要計算梯形面積,公式為:
梯形公式 =(上底+下底)*高/2
print("請計算梯形面積")
top = eval(input("請輸入上底"))
bottom = eval(input("請輸入下底"))
height = eval(input("請輸入高:"))
print(f"面積是{(top + bottom) * height / 2}")
打印結果為:
請計算梯形面積
請輸入上底10
請輸入下底15
請輸入高:5.5
面積是68.75
輕鬆的求出答案。
今天,就簡單練習到這邊,下回再見!👊