CodeSprout程式萌芽

CHAPTER 01 · PYTHON FOUNDATIONS

變數與資料型態

認識資料的名字、數字與文字,讀懂每一行運算如何產生結果。

這一章學會
  • 分辨 int、float、str、bool 與 None
  • 使用變數、基本運算及型態轉換
  • 看懂 print、return 與錯誤訊息的差別
先預測結果,再看輸出。

這裡的範例是可在 Python 3 執行的獨立小程式;輸出框是預先核對的結果。題庫作答時,請保留題目提供的 solve 與參數,使用 return 交回答案。模組章的雙檔範例會另外標明操作方式。

01|先讓程式說一句話

Python 會依順序執行程式。print(...) 把括號內的資料顯示出來;引號內的內容是文字,稱為字串。單引號或雙引號都可以,開頭與結尾要配成一對。

# 後面的內容是註解,用來記下理由或提醒自己,不會被執行。先照著輸入,再換一段文字,觀察哪些地方可以改、哪些符號需要保留。

PYTHON程式碼
# 今天先學會顯示訊息
print("開始練習 Python")
print("每天", 10, "分鐘")
預期輸出
開始練習 Python
每天 10 分鐘

02|變數是資料的名字

等號 = 先計算右邊,再讓左邊的名字指向結果。price = 18 之後,寫 price 就能取得這份資料。變數可以重新指定,但新值不會倒回去改變已經算好的其他變數。

名稱可使用字母、數字與底線,但不能以數字開頭,也不要使用 if、class 等保留字。本課以小寫英文加底線命名,例如 total_price。Price 與 price 是兩個不同名字。

PYTHON程式碼
price = 18
quantity = 3
total_price = price * quantity
price = 20
print(total_price)
print(price)
預期輸出
54
20

03|同樣看起來像 8,型態可能不同

型態決定資料能做什麼。int 是整數,float 是浮點數,str 是文字,bool 是 True/False。None 表示目前沒有值,並不是 0 或空字串。用 type(...) 可以檢查型態,讀錯誤訊息時很有幫助。

  • 8 + 2 是數字相加;"8" + "2" 是文字接在一起。
  • True/False 開頭要大寫;"False" 則只是含有五個字母的文字。
PYTHON程式碼
count = 8
price = 8.5
label = "8"
ready = True
result = None
print(type(count).__name__, type(price).__name__)
print(type(label).__name__, type(ready).__name__)
print(result)
預期輸出
int float
str bool
None

04|基本運算與順序

加、減、乘、除分別是 +、-、*、/。// 是向下取整的除法,% 是餘數,** 是次方。乘除優先於加減,不確定順序時用括號把想先算的部分包起來。

PYTHON程式碼
print(17 / 4)
print(17 // 4, 17 % 4)
print(2 ** 3)
print((5 + 3) * 2)
print(-7 // 3)
預期輸出
4.25
4 1
8
16
-3

05|轉換型態與組合文字

數字文字要先轉成數字,才能作數值運算。int("12") 得到 12;float("2.5") 得到 2.5;str(12) 得到文字。f-string 可把變數放進文字,字串前加 f,插入的位置使用大括號。

PYTHON程式碼
text_count = "12"
count = int(text_count)
name = "小芽"
print(count + 3)
print(f"{name} 今天練習了 {count} 分鐘")
print("Py" + "thon")
print(len("Python"))
預期輸出
15
小芽 今天練習了 12 分鐘
Python
6

06|把概念放進題庫的 solve

教學用 print 讓結果容易觀察;題庫則把輸入放進 solve 的參數,要求用 return 交回答案。下面的 amount 來自呼叫者,不用再寫 input()。def 與函式的完整觀念會在第六章展開,現在先保留題目提供的骨架。

PYTHON程式碼
def solve(amount):
    doubled = amount * 2
    return doubled

print(solve(7))
預期輸出
14

WHEN SOMETHING GOES WRONG

遇到錯誤,先檢查這裡

NameError:名字還不存在

檢查是否先指定變數,以及大小寫、拼字是否一致。讀取不存在的 total 與重新指定 total 是不同動作。

TypeError:把文字直接加上數字

先想清楚要計算數值還是組合訊息。前者用 int/float 轉換,後者可使用 f-string。

把 = 看成相等比較

= 是指定資料;比較兩個值是否相等要寫 ==,下一章會正式使用。

PAUSE AND TRY

先不要急著看別人的寫法

  1. 把 price 改成 25、quantity 改成 4,執行前先預測 total_price。
  2. 解釋 6 + 2 與 "6" + "2" 為什麼不同。
  3. 一題要求回傳整數,你回傳 "14" 時,值看似相同,哪一點不符合要求?

先用紙筆預測,再改動範例中的數字或文字。結果與預期不同時,找出最早開始不同的那一步。

把這幾件事帶走

  • 先讀右邊,再看資料指定給哪個名字。
  • 確認型態,再選運算與轉換方式。
  • 題庫使用參數接收資料,用 return 交回結果。

FROM READING TO PRACTICE

用三道免費題,練習本章觀念

先做簡單題確認語法,再把幾個步驟組合起來。三題都來自本章主題的新版免費題庫,難度表示需要組合的基本概念。

延伸閱讀:Python 官方文件

以下是本章查證使用的官方資料。可以先完成入門練習,再回來查閱更完整的參數與說明。