跳到內容

基本程式設計

這一章從最基本的開始:讓程式印出東西、把資料存進變數、讀進使用者的輸入,再做點運算。每個例子都能直接在頁面上執行,也能一步一步看它怎麼跑。

print() 會把括號裡的東西顯示到畫面上。文字要用引號(單引號 ' 或雙引號 " 都可以)框起來:

print("Hello, World!")

括號裡可以放好幾樣東西,用逗號隔開,print 會用空白把它們接起來一起印。

print 還能調整兩個地方:sep 是各項之間的分隔符(預設是空白),end 是這行結尾要接什麼(預設是換行)。把 end 設成空字串,下一個 print 就會接在同一行:

print("蘋果", "香蕉", "橘子", sep="")
print("先印這行", end="")
print("接在同一行")

字串裡也有幾個特別的符號:\n 是換行,\t 是定位(Tab)。它們各自代表一個字元,印出來會變成實際的換行或空格:

print("第一行\n第二行")
print("姓名\t年齡")

程式裡以 # 開頭的部分是註解,Python 執行時會直接跳過。註解是寫給人看的,用來說明這段程式在做什麼:

# 這行是註解,Python 會直接跳過
print("只有這行會執行") # 井號右邊也可以寫註解

# 可以獨占一行,也可以接在程式碼後面。養成寫註解的習慣,之後回頭看才知道當初在想什麼。

變數是幫一份資料取的名字,用 = 把右邊的值指定給左邊的名字。取好名字之後,後面就能用這個名字取用那份資料。

資料有不同的型別,最常用的是這四種:

  • 整數 int:像 18-3
  • 浮點數 float:帶小數點的數字,像 175.5
  • 字串 str:文字,要用引號框起來,像 "小明"
  • 布林 bool:只有 TrueFalse 兩種值,用來表示成立或不成立。

type() 可以查一份資料是什麼型別。按「執行」再一直按「下一步」,看變數一個一個出現,以及每個 type() 印出的結果:

name = "小明"
age = 18
height = 175.5
is_student = True
print(type(name))
print(type(age))
print(type(height))
print(type(is_student))

想一次把好幾個變數設成同一個值,可以用連鎖指定:

x = y = 0
print(x, y)

input() 會停下來等使用者輸入,把輸入的內容交回程式。括號裡的文字是提示訊息:

name = input("你叫什麼名字?")
print("你好," + name + "")

這裡有一點很重要:input() 拿到的一律是字串,就算你打的是數字也一樣。下面這段想把兩個輸入「相加」,結果卻不是你想的那樣。先別急,按「執行」,在跳出來的輸入框各填一個數字送出:

a = input("第一個數字:")
b = input("第二個數字:")
print(a + b)

輸入 35,印出來的是 35 而不是 8。因為兩個都是字串,+ 對字串的意思是「接起來」,不是「相加」。

要真的做數字運算,得先用 int() 把字串轉成整數:

a = int(input("第一個數字:"))
b = int(input("第二個數字:"))
print(a + b)

一樣輸入 35,這次印出 8。除了 int(),還有 float()(轉成浮點數)和 str()(轉回字串)可以用。

你可能會在考題或別人的程式裡看到另一種寫法 eval(input())eval 會把讀進來的字串直接當成 Python 運算式算出結果,所以輸入 21 會直接得到數字 21

n = eval(input("輸入一個數字:"))
print(n * 2)

它看起來很方便,但 eval 會執行字串裡的任何東西,用在來路不明的輸入上有安全風險。自己寫的時候,建議還是用 int()float() 這種明確指定型別的寫法,看得懂 eval(input()) 就好。

數字可以做這些運算,一步一步看每一行印出什麼:

a = 7
b = 3
print(a + b)
print(a - b)
print(a * b)
print(a / b)
print(a // b)
print(a % b)
print(a**b)

幾個容易搞混的地方:

  • / 是除法,結果一定是浮點數7 / 3 會得到 2.333…
  • // 是整數除法,只取商、去掉小數,7 // 3 得到 2
  • % 是取餘數,7 % 3 得到 1
  • ** 是次方,7 ** 3 就是 7 的 3 次方。

需要更多數學功能時,可以匯入內建的 math 模組。這是我們第一次用 import

import math
print(math.sqrt(16))
print(math.pi)

寫了 import math 之後,就能用 math.sqrt() 開根號、math.pi 取圓周率等等。

要把變數的值嵌進一段文字裡,最方便的是 f-string(Python 3.6 以後才有):在字串前面加一個 f,再把變數用大括號 {} 包起來放進去:

name = input("你的名字:")
age = int(input("你的年齡:"))
print(f"你好,{name},你今年 {age} 歲。")

f"你好,{name},你今年 {age} 歲。" 裡的 {name}{age},會被換成變數實際的值。這比用 + 一段一段接字串好讀得多,也不用煩惱型別轉換。