2026年8月30日 星期日

讓水井三寶開口說話——input、print與型別轉換

Python一下|第2篇

讓水井三寶開口說話——input、print與型別轉換

《從風土資料到智慧生活的程式設計》——讓程式從單向展示,變成會聽、會回答的地方導覽員。

本篇學習目標
  • 使用print()輸出文字、變數及多筆資料。
  • 使用input()接收使用者輸入。
  • 理解input()取得的資料一律是字串。
  • 使用int()float()str()進行型別轉換。
  • 完成一個「水井三寶互動導覽」小程式。

一、從會顯示文字,到會和人互動

上一篇,我們在Python、Thonny或Google Colab中執行第一支程式。當時程式只會把預先寫好的內容顯示出來。這一次,我們要讓程式先詢問使用者,再依照回答呈現結果。

這種「輸入—處理—輸出」的流程,是智慧導覽、問卷、資料登錄、感測資料處理及AI系統的共同基礎。

輸入 Input

接收使用者輸入的姓名、答案或數值。

處理 Process

儲存、轉換、計算或判斷取得的資料。

輸出 Output

把處理結果顯示給使用者。

二、使用print()讓Python說話

print()是Python最常用的輸出函式,可以顯示文字、數字及變數內容。

範例1:輸出文字

print("歡迎來到雲林縣口湖鄉水井村!")
print("今天要介紹水井三寶。")
歡迎來到雲林縣口湖鄉水井村! 今天要介紹水井三寶。

範例2:同時輸出文字與變數

place = "水井村"
treasure = "姻緣花"

print("地方:", place)
print("地方特色:", treasure)

逗號可以讓print()一次輸出多個項目;Python通常會自動在項目之間加入空白。

範例3:使用f-string排出自然句子

place = "水井村"
treasure = "白馬"

print(f"歡迎來到{place},今天要認識的是{treasure}。")
f-string:在字串前加上f,就能把大括號中的變數放進句子。這種寫法清楚、好讀,後續教材會經常使用。

print()常用參數

參數作用範例
sep指定多個輸出項目之間的分隔符號print("白馬", "烏龜", "姻緣花", sep="、")
end指定輸出結束後使用的字元,預設為換行print("水井村", end="→")
print("白馬", "烏龜", "姻緣花", sep="、")
print("地方故事", end=" → ")
print("數位導覽")

三、使用input()讓Python聽見回答

input()會顯示提示文字,暫停程式並等待使用者輸入;按下Enter後,輸入內容才會交給程式。

name = input("請問你叫什麼名字?")
print(f"{name},歡迎你來認識水井村!")
操作提醒:在Thonny執行時,請到下方Shell輸入答案;在Google Colab執行時,輸入框會出現在程式碼儲存格下方。

把輸入內容存入變數

等號左邊的name是變數,負責記住使用者輸入的內容:

favorite = input("水井三寶中,你最想認識哪一個?")
print(f"你選擇了:{favorite}")

四、input()取得的內容都是字串

即使使用者輸入28input()取得的仍是文字"28",而不是可以直接計算的整數。

temperature = input("請輸入目前水溫:")

print(temperature)
print(type(temperature))

type()可用來查看資料型別,執行結果會顯示<class 'str'>

為什麼沒有轉換就不能正確計算?

temperature = input("請輸入目前水溫:")
tomorrow = temperature + 1

上例會產生錯誤,因為字串不能直接和整數相加。必須先把輸入內容轉成數值。

五、int()、float()與str()型別轉換

函式轉換結果適合資料範例
int()整數人數、數量、次數int("25")變成25
float()浮點數水溫、重量、價格、溶氧float("28.5")變成28.5
str()字串把數值轉成可串接的文字str(28.5)變成"28.5"

範例:計算參訪總人數

students = int(input("請輸入學生人數:"))
teachers = int(input("請輸入教師人數:"))
total = students + teachers

print(f"本次USR參訪共有{total}人。")

範例:輸入智慧養殖水溫

water_temperature = float(input("請輸入養殖池水溫:"))
adjusted_temperature = water_temperature + 0.5

print(f"目前水溫為{water_temperature:.1f}°C。")
print(f"模擬升高0.5°C後為{adjusted_temperature:.1f}°C。")

:.1f表示以小數點後一位顯示浮點數。

六、完成「水井三寶互動導覽」

現在把輸入、變數、型別轉換與輸出組合成一支完整程式:

print("=== 水井三寶互動導覽 ===")

name = input("請輸入你的名字:")
age = int(input("請輸入你的年齡:"))
favorite = input("白馬、烏龜、姻緣花,你最想認識哪一個?")

print()
print(f"{name},歡迎來到水井村!")
print(f"你今年{age}歲,最想認識的是{favorite}。")
print("地方故事因為有人聆聽,才能繼續流傳。")
=== 水井三寶互動導覽 === 請輸入你的名字:小敏 請輸入你的年齡:20 白馬、烏龜、姻緣花,你最想認識哪一個?姻緣花 小敏,歡迎來到水井村! 你今年20歲,最想認識的是姻緣花。 地方故事因為有人聆聽,才能繼續流傳。

七、常見錯誤與除錯

錯誤情況原因修正方式
SyntaxError引號、括號或冒號未成對檢查中英文標點及左右括號
NameError變數拼字不同,或尚未建立確認大小寫及變數名稱完全一致
TypeError字串與數字直接相加先使用int()float()str()轉換
ValueError把「二十八」或空白轉為數值數值欄位輸入阿拉伯數字;進階時加入例外處理
程式一直等待input()正在等待使用者輸入在Shell或Colab輸入框輸入資料並按Enter
資料倫理提醒:課堂練習不要要求學生輸入身分證號、電話、住址等不必要個資。USR場域蒐集長者或居民資料前,應先說明用途、取得同意並妥善保存。

八、漸進式練習

基礎練習:地方名片

輸入社區名稱、代表農產與地方特色,再輸出一張文字名片。

community = input("社區名稱:")
product = input("代表農產或漁產:")
feature = input("地方特色:")

print("------ 地方名片 ------")
print(f"社區:{community}")
print(f"農漁產:{product}")
print(f"特色:{feature}")

進階練習:養殖用電估算

輸入設備功率與每天運轉時數,估算一天用電量:

power = float(input("設備功率(kW):"))
hours = float(input("每天運轉時數:"))
energy = power * hours

print(f"每日估計用電量:{energy:.2f} kWh")

USR挑戰:長者故事基本資料

設計一支程式,依序詢問:

  1. 故事主題。
  2. 發生地點。
  3. 最懷念的味道、聲音或情景。
  4. 是否同意將整理後的故事公開展示。

最後以清楚的格式輸出。請不要增加受訪者沒有說過的內容,也不要蒐集與作品無關的個人資料。

九、學習檢核

  1. print()input()分別負責什麼工作?
  2. 為什麼input()輸入的28不能直接加上1
  3. 人數、水溫與姓名分別適合轉成哪一種資料型別?
  4. print(a, b, sep="、")中的sep有什麼作用?
  5. USR場域進行互動輸入時,為什麼要注意個資與知情同意?

十、AI協作提示詞

請擔任Python初學者助教。
我要設計一支「地方文化互動介紹」程式,
目前只學過print、input、變數、int、float、str與f-string。

請先問我想介紹的社區、農漁產或地方故事,
再依我提供的內容產生程式。
不要使用if、for、函式或尚未學過的語法,
也不要增加我沒有提供的人物與地方資料。
最後逐行說明程式。

十一、本篇小結

print()讓程式把資訊傳達給人,input()讓程式聽見人的回答,型別轉換則讓輸入的文字能正確參與計算。三者組合起來,Python就不再只是顯示固定內容,而能成為簡單的地方導覽與資料登錄工具。

程式會說話,也要先學會聆聽;科技進入USR場域,也應從理解地方與尊重居民開始。
系列:《Python一下:從風土資料到智慧生活的程式設計》
上一篇:《從零開始建置Python、Thonny與Google Colab學習環境》
下一篇:《用文蛤養殖數據學會資料型別、變數與運算子》
教學定位:國立虎尾科技大學USR × 智慧生活科技 × 地方場域實作

沒有留言:

張貼留言