← 返回大綱
第一章

基礎語法
與變數型別

Basic Syntax & Data Types

Scratch → Python

說出 → print()

Scratch
說出 "Hello, World!"
Python
print("Hello, World!")

可以 print 任何東西:

print("Hello!")          # 字串
print(42)                # 數字
print(3.14)              # 小數
print("1 + 1 =", 1 + 1) # 同時印多個,中間空格分隔
Hello!
42
3.14
1 + 1 = 2
Scratch → Python

變數設定

Scratch
將 score 設為 100
Python
score = 100

Python 用 = 指定值,不需要事先宣告:

name = "Ian"       # 字串
age = 18           # 整數
height = 175.5     # 小數
is_student = True  # 布林值

print(name, "今年", age, "歲")
Ian 今年 18 歲
概念

四種基本資料型別

型別英文範例說明
intInteger42, -10整數
floatFloat3.14, -0.5小數(浮點數)
strString"Hello", 'Hi'字串(文字)
boolBooleanTrue, False布林(真/假)
x = 42
print(type(x))       # <class 'int'>

y = "Hello"
print(type(y))       # <class 'str'>
type() 函式

type(變數) 可以查看變數的型別。

字串

字串 (str) 常用操作

name = "Python"

print(len(name))          # 6 — 字串長度
print(name.upper())       # PYTHON — 全大寫
print(name.lower())       # python — 全小寫
print(name[0])            # P — 第一個字元(索引從 0 開始)
print(name[0:3])          # Pyt — 切片
f-string

f-string 基礎用法

傳統寫法需要用 + 串接,還要手動轉型:

name = "Alice"
age = 25

# 傳統寫法(較冗長)
print("名字是 " + name + ",年齡是 " + str(age))

# f-string 寫法(推薦)
print(f"名字是 {name},年齡是 {age}")
名字是 Alice,年齡是 25
名字是 Alice,年齡是 25
f-string 語法

在字串前加 f,然後用 {} 包住要嵌入的變數,不需要手動 str() 轉型。

↓ 往下看更多 f-string 用法

f-string

f-string 支援運算式

{} 裡面不只能放變數,還能放任何運算式

x = 10
y = 5

print(f"x + y 的結果是:{x + y}")
print(f"Alice 的名字長度是:{len('Alice')}")
print(f"比較結果:{x > y}")
x + y 的結果是:15
Alice 的名字長度是:5
比較結果:True
什麼都能放!

算術、函式呼叫、比較運算、甚至方法呼叫都可以寫在 {} 裡面。

f-string

f-string 格式化數字

: 加上格式碼來控制數字顯示方式:

需求寫法範例(v = 3.14159)結果
小數點位數:.nff"{v:.2f}"3.14
百分比:.n%f"{0.85:.1%}"85.0%
千分位逗號:,f"{1000000:,}"1,000,000
補零:0ndf"{5:03d}"005
price = 49.9
rate = 0.852

print(f"價格:{price:.2f}")    # 價格:49.90
print(f"匯率:{rate:.1%}")     # 匯率:85.2%
f-string

f-string 對齊與填充

可以用來排版文字,特別是製作表格或對齊輸出時:

符號說明範例結果
<靠左對齊f"|{'Hi':<10}|"|Hi        |
>靠右對齊f"|{'Hi':>10}|"|        Hi|
^置中對齊f"|{'Hi':^10}|"|    Hi    |

還可以指定填充字元

text = "Hi"

# 總寬度 10,靠右對齊,空白處補 *
print(f"|{text:*>10}|")   # |********Hi|

# 總寬度 10,置中對齊,空白處補 -
print(f"|{text:-^10}|")   # |----Hi----|
f-string

f-string Debug 小技巧

從 Python 3.8 開始,f-string 支援 {var=} 寫法,
同時印出「變數名稱」與「變數值」,非常適合 Debug:

score = 95
name = "Tom"

print(f"{score=}")    # score=95
print(f"{name=}")     # name='Tom'

# 也能搭配運算式
x = 10
y = 3
print(f"{x + y=}")    # x + y=13
Debug 神器

{} 裡的變數後面加上 =,Python 會自動幫你印出變數名稱,省去手動寫 print("score =", score) 的麻煩。

進階輸出

printf 風格格式化(% 運算子)

Python 支援類似 C 語言 printf 的格式化寫法:

name = "Ian"
age = 18
score = 95.5

print("我叫 %s,今年 %d 歲" % (name, age))
# 我叫 Ian,今年 18 歲

print("成績:%f 分" % score)    # 成績:95.500000 分
print("成績:%.1f 分" % score)  # 成績:95.5 分
佔位符說明範例結果
%s字串"Hi %s" % "Ian"Hi Ian
%d整數"年齡 %d" % 18年齡 18
%f浮點數"%.2f" % 3.141593.14
%05d補零(5位)"%05d" % 4200042
三種格式化方式比較

% 是最舊的寫法,.format() 較新,f-string 最推薦。
但讀別人的程式時常會看到 % 寫法,所以要認得!

進階輸出

.format() 方法

{} 當佔位符,搭配 .format() 填入值:

name = "Ian"
age = 18

print("我叫 {},今年 {} 歲".format(name, age))
# 我叫 Ian,今年 18 歲

# 可以指定順序
print("{1} 今年 {0} 歲".format(age, name))
# Ian 今年 18 歲

# 可以指定名稱
print("{n} 的成績是 {s} 分".format(n="Amy", s=100))
# Amy 的成績是 100 分

↓ 往下滑看三種格式化總整理

進階輸出

三種格式化總整理

name = "Ian"
age = 18

# ① % 格式化(最舊)
print("我叫 %s,%d 歲" % (name, age))

# ② .format()(較新)
print("我叫 {},{} 歲".format(name, age))

# ③ f-string(最推薦 ✦ Python 3.6+)
print(f"我叫 {name},{age} 歲")
該用哪一種?

自己寫新程式時用 f-string 就對了!
但讀別人的程式時三種都會遇到,所以都要認得。

進階輸出

print() 的 sep 與 end 參數

# sep:改變多個值之間的分隔符(預設是空格)
print("A", "B", "C")              # A B C
print("A", "B", "C", sep="-")     # A-B-C
print("A", "B", "C", sep="")      # ABC

# end:改變結尾字元(預設是換行 \n)
print("Hello", end=" ")
print("World")                     # Hello World(印在同一行)

# 實用範例:印出倒數計時
for i in range(5, 0, -1):
    print(i, end="...")
print("發射!")
# 5...4...3...2...1...發射!
小提醒

sepend 是 print 的關鍵字參數,後面學函式時會更詳細說明。

規則

變數命名規則

合法命名

name = "Ian"
my_score = 100
score2 = 95
_temp = 0
studentName = "Amy"

不合法命名

2score = 100    # 不能數字開頭
my-name = "Ian" # 不能用減號
class = "A"     # 不能用保留字
命名慣例(snake_case)

Python 習慣用底線分隔單字:my_scorefirst_nameis_logged_in

Python 保留字(不能當變數名):ifelseforwhiledefclassTrueFalseNone

型別轉換

型別轉換

不同型別之間可以互相轉換:

x = "42"
print(type(x))       # <class 'str'>

y = int(x)           # 字串轉整數
print(type(y))       # <class 'int'>
print(y + 1)         # 43

z = float("3.14")    # 字串轉小數
print(z)             # 3.14

s = str(100)         # 數字轉字串
print("分數:" + s)  # 分數:100
注意

"42" + 1 會出錯!字串和數字不能直接相加,需要先轉型。

Scratch → Python

詢問並等待 → input()

Scratch
詢問 "你叫什麼名字?" 並等待
Python
name = input("你叫什麼名字?")
name = input("請輸入你的名字:")
print(f"你好,{name}!")

age = int(input("請輸入年齡:"))  # input 回傳字串,需轉型
print(f"你今年 {age} 歲")
重要!

input() 的回傳值永遠是字串,如果要做數學運算,記得用 int()float() 轉型。

實作練習

動手試試看

建立 intro.py,完成以下程式:

# 請使用者輸入姓名和年齡
name = input("請輸入你的名字:")
age = int(input("請輸入你的年齡:"))

# 計算出生年份(假設今年是 2026)
birth_year = 2026 - age

# 用 f-string 輸出完整介紹
print(f"你好!我叫 {name}")
print(f"我今年 {age} 歲,出生於 {birth_year} 年")

第一章完成!

學會了 print、格式化輸出、變數、資料型別與 input。