跳轉到

📚 Python程式設計-計算篇 (9上翰林版2-2)

本課程是資訊科技教科書(9上翰林版)的補充教材與範例操作,搭配課本中的內容,來學習Python的基本輸入輸出,資料型態的轉換、內建函式的使用、認識選擇與重複結構…等,入門文字型程式語言,銜接高中資訊科技課程。

實際撰寫程式時,搭配Py4t專為中小學學生設計的便利貼與輔助排版功能,簡化Python程式撰寫的步驟。希望讓學生能更專注於程式的思考及運算思維的培養。

教科書資料引用來源

本課程之例題、範例程式及Scratch對照圖片,均引用自翰林出版資訊科技教科圖書9上第2章-從Scratch到Python,2-2Python程式設計-計算篇





📕 哈囉


在校園的早晨,常常會看到同學之間互相道早安。仔細想一想,「當別人跟我說早安,而我也向他打招呼」,在這個情境中發生了什麼事?


打招呼


人與人之間的「聽」跟「說」,對電腦來說,有沒有類似的動作?


輸入輸出


請設計一個程式,讓使用者輸入名字後,電腦會將名字呈現在畫面上與使用者打招呼。


Python計算篇 範例 (1/8 新檔) --- 哈囉程式

name = input('請問您的名字是?')
print('哈囉!', name, '您好!')

Scratch對照

補充資料 馮紐曼與現代電腦架構

【Lynn 寫點科普】你知道你正在用的電腦是 70 年前發明的馮紐曼架構嗎?





📙 求三數之和


除了把輸入的文字直接顯示,有時我們會想要把資料做一些計算,比如是加法的運算。

但是在Python程式中,「文字」卻不能直接拿來做計算,這到底是為什麼呢?



文字數字差異


所以記得要把「輸入文字」先轉換成「整數」哦。

接下來,請設計一個程式,讓使用者輸入三個數字後,再呈現三個數字相加的和


Python計算篇 範例 (2/8 新檔) --- 求三數之和

x = int(input('請輸入數字 x:'))
y = int(input('請輸入數字 y:'))
z = int(input('請輸入數字 z:'))
print(x + y + z)

Scratch對照





📒 求平均數


計算後的數字,也可以再轉換成字串,做出不同的輸出組合。再來做個練習。

請設計一個程式,讓使用者輸入兩個數字後,再呈現兩個數字的平均值

程式資料的轉換流程如下:


資料型態與轉換


請試著動手寫寫看。


Python計算篇 範例 (3/8 新檔) --- 求平均數

x = int(input('請輸入數字 x:'))
y = int(input('請輸入數字 y:'))
average = (x + y) / 2
print('平均是' + str(average))

Scratch對照





📗 計算學期成績


除了計算以外,我們也常常會對結果做分析,從數字中取出有意義的訊息。


資料分析


請設計一個程式,讓使用者輸入各項成績後,再將各項成績轉換為學期成績,並判 斷學期成績是否及格?(其中,作業成績占 40%,測驗成績占 40%,平時成績占 20%,學期成績 60 分為及格分數。)


Python計算篇 範例 (4/8 新檔) --- 計算學期成績

score1 = int(input('請輸入作業成績:'))
score2 = int(input('請輸入測驗成績:'))
score3 = int(input('請輸入平時成績:'))
grade = score1 * 0.4 + score2 * 0.4 + score3 * 0.2
print('學期成績是' + str(grade))
if grade  <  60 :
    print('不及格')
else :
    print('及格')

Scratch對照

結構化程式設計

雙向選擇結構





📘 累加計算


接下來,請設計一個程式,讓使用者輸入數字 n 後,再計算 1 + 2 + 3 +⋯+ n 的值。

先將問題簡化,想一想計算1+2+3+4的值,如何用程式來做呢?

使用Python的for重複結構可以解決這個問題。for常常會搭配range函式所產生的整數數列來執行計次的迴圈。不過你知道嗎?如果要產生1~4的數列,要使用range(1, 4+1),奇怪,到底是為什麼呢?


有頭無尾


想清楚了嗎?實際來寫程式看看:


Python計算篇 範例 (5/8 新檔) --- 累加計算

n = int(input('請輸入數字 n:'))
total = 0
for i in range(1, n + 1) :
    total = total + i
print('1+2+...+' + str(n) + '=' + str(total))

註:課本範例使用sum做為變數名稱,但sum為python內建函式,不建議使用,故在本範例中改為total

Scratch對照

結構化程式設計

重複結構





📕 密碼檢查


當我們使用晶片金融卡到自動提款機(ATM)領錢時,要注意什麼事呢?


提款

(資料來源:1)


根據以上的情境,請設計一個電腦系統的密碼驗證機制,條件如下

  1. 若第一次輸入密碼錯誤後,可再重複嘗試輸入兩次。
  2. 若三次密碼都錯誤,跳出使用者帳號被鎖定的訊息。


Python計算篇 範例 (6/8 新檔) --- 密碼檢查

password = '137'
times = 1
password2 = input('請輸入密碼:')
while password != password2 and times < 3 :
    print('密碼錯誤!')
    times = times + 1
    password2 = input('請輸入密碼:')
if password == password2 :
    print('歡迎使用本系統')
else :
    print('輸入密碼錯誤3次,帳號已被鎖定')

Scratch對照

結構化程式設計

while重複結構

雙向選擇結構





📙 任意數的所有因數


接下來,請設計一個程式,讓使用者輸入一個數字後,再找出該數字的所有因數


還記得以前學過的因數與倍數嗎?

(1分52秒, 資料來源:2)


在Python中, % 是代表除法取餘數的運算,比如說 6 % 2 的餘數是 0 ,而 5 % 2 的餘數是 1,利用 % 可以讓我們找出因數。

想清楚了嗎?試著寫寫看程式。


Python計算篇 範例 (7/8 新檔) --- 任意數的所有因數

n = int(input('請輸入數字n:'))
factors = []
for i in range(1, n + 1) :
    if n % i == 0 :
        factors.append(i)
print(factors)

Scratch對照





📒 抽獎


有三十人參加摸獎活動,分別有編號 1 ∼ 30 的摸獎券,透過電腦進行抽獎,從中抽出三位幸運兒頒發獎品

Python的random模組中,有個randint函式,類似Scratch中的隨機取數,試著寫寫看程式。


Python計算篇 範例 (8/8 新檔) --- 抽獎

from random import randint
n = 30
box = []
for i in range(1, n + 1) :
    position = randint(0, i-1)
    box.insert(position, i)
print(box)
print('第一特獎:' + str(box[0]))
print('第二特獎:' + str(box[1]))
print('第三特獎:' + str(box[2]))

Scratch對照





  1. 自動提款機, By Solomon203, 維基百科連結 

  2. 因數與倍數, By均一教育平台 Junyi Academy, youtube連結