การแสดงผลและรับค่า (I/O & Formatting)
โปรแกรมรับข้อมูลจากผู้ใช้และแสดงผลลัพธ์แบบจัดรูปแบบสวยงามได้อย่างไร?
ทำอย่างไรให้ซอฟต์แวร์สื่อสารและรับข้อมูลจากผู้ใช้งานได้แบบไดนามิก?
"โปรแกรมที่สมบูรณ์ไม่ใช่โปรแกรมที่คิดเลขคำตอบเดิมตลอดเวลา แต่เป็นโปรแกรมที่สามารถรับข้อมูลเข้า ประมวลผล แล้วแสดงผลลัพธ์ที่ตรงตามความต้องการ Chatbot AI ที่ตอบคำถามผู้ป่วย ระบบจองตั๋วออนไลน์ ล้วนใช้หลักการ I/O ทั้งสิ้น!"
เซนเซอร์ตรวจวัด
รับค่าอุณหภูมิ, ความชื้น (Input) และแจ้งเตือนเมื่อเกินขีดจำกัด (Output)
วิเคราะห์สูตรเคมี
ให้ผู้ใช้ป้อนมวลของสาร (Input) เพื่อคำนวณปริมาตรและจัดรูปแบบทศนิยม (Output)
ผู้ช่วย AI ทางการแพทย์
ถามอาการผู้ป่วย (Input) และประเมินความเสี่ยงเพื่อแนะนำเบื้องต้น (Output)
1
คำสั่ง input() — รับค่าจากผู้ใช้
คำสั่ง input() ใช้สำหรับรอรับข้อมูลที่ผู้ใช้พิมพ์เข้ามาทางคีย์บอร์ด เมื่อผู้ใช้กด Enter ข้อมูลนั้นจะถูกนำไปเก็บไว้ในตัวแปร
name = input("กรุณากรอกชื่อของคุณ: ")
print("สวัสดีคุณ", name)
⚠️ สำคัญ: input() คืนค่าเป็น String (str) เสมอ!
ไม่ว่าผู้ใช้จะพิมพ์ตัวเลข เช่น 15 คำสั่ง input() ก็จะมองว่าเป็นข้อความ "15" ไม่สามารถนำไปบวกเลขต่อได้ทันที
🚨 หมายเหตุสำหรับ Python Playground บนเว็บไซต์นี้
IMPORTANT: ใน Playground ของเว็บไซต์นี้ (ที่ขับเคลื่อนด้วย Pyodide) ยัง ไม่รองรับ คำสั่ง input() ดังนั้นในการทำแบบฝึกหัด เราจะใช้ การกำหนดค่าตรงๆ เช่น name = 'นักเรียน' แทนชั่วคราวนะครับ
2 การแปลงชนิดข้อมูล Input เป็นตัวเลข
เนื่องจาก input() รับค่ามาเป็นข้อความเสมอ หากต้องการนำไปคำนวณ ต้องแปลงเป็น จำนวนเต็ม int() หรือ ทศนิยม float() เสียก่อน
# การรับอายุ (จำนวนเต็ม) age_text = input("กรอกอายุ: ") age = int(age_text) # หรือเขียนรวบรัดแบบนี้ (นิยมกว่า) weight = float(input("น้ำหนัก (kg): ")) height = float(input("ส่วนสูง (m): ")) bmi = weight / (height ** 2) print("BMI ของคุณคือ:", bmi)
ข้อควรระวัง: หากผู้ใช้พิมพ์ตัวอักษรแทนตัวเลข จะเกิด Error (ValueError) ตอนแปลงค่า
3 F-String — จัดรูปแบบข้อความขั้นเทพ!
ใน Python 3.6+ มีวิธีการจัดรูปแบบข้อความที่ง่ายและทรงพลัง เรียกว่า f-string (Format String) โดยพิมพ์ตัว f หน้าเครื่องหมายคำพูด และใส่ชื่อตัวแปรในวงเล็บปีกกา {}
name = "จอห์น"
score = 95.5
print(f"นักเรียนชื่อ {name} ได้คะแนน {score} คะแนน")
✨ ความสามารถพิเศษของ f-string
- • คำนวณข้างในได้เลย:
f"2+2 = {2+2}" - • จัดทศนิยม:
f"ค่า Pi = {3.14159:.2f}"(ได้ 3.14) - • จัดพื้นที่เว้นวรรค (ซ้าย/ขวา):
f"|{name:>10}|"(จัดชิดขวา 10 ตัวอักษร)
4 Escape Characters — อักขระหลีกเลี่ยง
บางครั้งเราต้องการพิมพ์อักขระพิเศษ (เช่น ขึ้นบรรทัดใหม่ หรือ แท็บ) เราจะใช้สัญลักษณ์แบ็คสแลช \ ตามด้วยตัวอักษร
| สัญลักษณ์ | ความหมาย |
|---|---|
| \n | New line (ขึ้นบรรทัดใหม่) |
| \t | Tab (เว้นช่องว่างประมาณ 4-8 เคาะ) |
| \\ | พิมพ์ตัวแบ็คสแลช 1 ตัว |
| \" หรือ \' | พิมพ์เครื่องหมายคำพูดโดยไม่ให้ซ้ำกับตัวเปิด/ปิดสตริง |
print("รายการสารเคมี:\n1.\tน้ำ (H2O)\n2.\tเกลือ (NaCl)")
5
print() ขั้นสูง
ในบทที่ 1 เราเรียนรู้ sep และ end ไปบ้างแล้ว ลองนำมาประยุกต์ใช้กับการพิมพ์ตารางข้อมูลทางวิทยาศาสตร์ดู
# พิมพ์ตารางรายงานด้วย print, sep, และ f-string
print("สาร", "มวล(g)", "ปริมาตร(ml)", sep="\t|\t")
print("-" * 40)
print("A", f"{10.556:.1f}", f"{20.1:.2f}", sep="\t|\t")
print("B", f"{5.12:.1f}", f"{8.444:.2f}", sep="\t|\t")
input() ในการทดลองเขียนโค้ดด้านล่าง ให้เรากำหนดค่าเริ่มต้นให้ตัวแปรโดยตรง เช่น name = "สมชาย" แทนการใช้ name = input(...)
🟢 ระดับ 1 โจทย์พื้นฐาน: ใช้ f-string แสดงคำทักทาย
จงเติมคำสั่งในช่อง ___ โดยใช้ f-string เพื่อดึงตัวแปร name และ age มาแสดงในข้อความให้ออกมาเป็น "สวัสดีนักเรียนชื่อ [ชื่อ] อายุ [อายุ] ปี"
f หน้าเครื่องหมายคำพูดเปิด และใส่ชื่อตัวแปรใน { }
กดปุ่ม "รันโค้ด" หรือ "ตรวจคำตอบ" เพื่อดูผลลัพธ์...
🟡 ระดับ 2 โจทย์ท้าทาย: คำนวณ BMI พร้อมจัดรูปแบบทศนิยม
กำหนดค่าตัวแปร weight = 65.0 (น้ำหนัก kg) และ height = 1.72 (ส่วนสูงเมตร) ให้เขียนโปรแกรมคำนวณ BMI แล้วแสดงผลลัพธ์ออกมาโดยจัดให้ มีทศนิยมเพียง 1 ตำแหน่ง (ใช้ :.1f ใน f-string)
height ** 2 และจัดทศนิยมใช้ {bmi:.1f}
กดปุ่ม "รันโค้ด" หรือ "ตรวจคำตอบ" เพื่อดูผลลัพธ์...
🔴 ระดับ 3 โจทย์สร้างสรรค์ (ALPS-AI): รายงานผลการทดลองวิทยาศาสตร์
ให้ออกแบบโปรแกรมรายงานผลการทดลองทางวิทยาศาสตร์ โดยสมมติตัวแปร (เช่น ชื่อสารเคมี, มวล, ปริมาตร) แล้วใช้ \t เพื่อสร้างตารางให้ตรงกัน และใช้ f-string เพื่อควบคุมทศนิยมของผลลัพธ์การคำนวณ (เช่น ความหนาแน่น)
"คุณคือนักวิทยาศาสตร์ ช่วยเขียนโปรแกรม Python จัดรูปแบบรายงานผลการทดลองแล็บเคมีด้วย f-string แสดงค่าความเข้มข้น มวลสาร และ pH แบบจัดชิดซ้าย-ขวาอย่างสวยงาม"
substance = "NaCl"
mass = 25.5
vol = 10.0
density = mass / vol
print("สาร\tมวล\tความหนาแน่น")
print(f"{substance}\t{mass}\t{density:.2f}")
กดปุ่ม "รันโค้ด" เพื่อดูผลลัพธ์...
แบบบันทึกผลงานโครงงานและการตรวจทานโค้ด (ALPS Portfolio)
บันทึกขั้นตอนการออกแบบแนวคิด คำสั่ง และการตรวจทานโค้ดจาก AI เพื่อประเมินผลการเรียนรู้
ตอบคำถาม 5 ข้อ เพื่อประเมินความเข้าใจและบันทึกผลการเรียนรู้ของบทที่ 3:
1. คำสั่ง input() จะได้ข้อมูลประเภทใดเสมอ?
2. f'{3.14159:.2f}' จะแสดงผลลัพธ์เป็นอะไร?
3. อักขระหลีกเลี่ยง \t หมายถึงอะไร?
4. คำสั่ง print('A', 'B', sep='') จะแสดงผลลัพธ์เป็นอะไร?
5. โค้ดใดแก้ไข Bug ของ f'score = {score.2f}' ได้ถูกต้อง?