สรุปแนวคิด IPO + ตัวอย่างพร้อม “โจทย์ชัดเจน” และแบบฝึกหัดปลายบท (มีเฉลยให้กดดู)
การสร้างโปรแกรมคำนวณที่ดีเริ่มจากการคิดอย่างเป็นระบบตาม IPO Model:
รับค่าที่จำเป็นจากผู้ใช้ด้วย input() และแปลงชนิดเป็น int() หรือ
float() ก่อนคำนวณ
ใช้ตัวแปรเก็บค่า แล้วคำนวณตามสูตรด้วยตัวดำเนินการ + - *
/ **
แสดงผลด้วย print() และจัดรูปแบบด้วย f-string เพื่อให้อ่านง่าย
# 1) Input a = float(input("ป้อนค่า a: ")) b = float(input("ป้อนค่า b: ")) # 2) Process result = (a + b) / 2 # 3) Output print(f"ค่าเฉลี่ยของ {a} และ {b} คือ {result:.2f}")
โจทย์: เขียนโปรแกรมรับ ความกว้าง และ ความยาว (เมตร) แล้วคำนวณ
พื้นที่ และแสดงผลเป็นทศนิยม 2 ตำแหน่ง เช่น พื้นที่สี่เหลี่ยมผืนผ้า: 40.00 ตารางเมตร
วิธีทดสอบ: พิมพ์อินพุตในช่อง Standard input ตามลำดับที่โค้ดเรียก
input()
โจทย์: เขียนโปรแกรมรับข้อมูล 4 ค่า: ราคาต่อชิ้น, จำนวน, เปอร์เซ็นต์ส่วนลด, เปอร์เซ็นต์ VAT จากนั้นคำนวณและพิมพ์ ราคารวม, จำนวนส่วนลด, ภาษี, และ ราคาสุทธิ เป็นทศนิยม 2 ตำแหน่ง โดยแสดงรายละเอียดทีละบรรทัด
โจทย์: เขียนโปรแกรม 2 ส่วน: (ก) รับ รัศมี (เมตร) คำนวณ พื้นที่วงกลม เป็นทศนิยม 2 ตำแหน่ง (ข) รับ อุณหภูมิ °C แปลงเป็น °F และพิมพ์ผล
โจทย์: รับคะแนน 3 วิชา แล้วคำนวณค่าเฉลี่ย (ทศนิยม 2 ตำแหน่ง) ถ้าค่าเฉลี่ย ≥ 50 ให้แสดง “ผ่าน” มิฉะนั้น “ไม่ผ่าน”
เลือกทำโจทย์ต่อไปนี้อย่างน้อย 1 ข้อ (หรือจะทำทั้งหมดก็ได้):
แนวทาง: ยึดตาม IPO — รับค่า ➜ ประมวลผล ➜ แสดงผล ด้วย print() และ
f-string
# เฉลยตัวอย่าง 1: BMI
w = float(input("น้ำหนัก (กก.): "))
h = float(input("ส่วนสูง (เมตร): "))
bmi = w / (h ** 2)
if bmi < 18.5:
status = "น้ำหนักน้อย"
elif bmi < 25:
status = "น้ำหนักปกติ"
elif bmi < 30:
status = "น้ำหนักเกิน"
else:
status = "อ้วน"
print(f"BMI = {bmi:.2f} ({status})")
# เฉลยตัวอย่าง 2: ค่าไฟฟ้า + VAT 7%
units = float(input("หน่วยไฟฟ้าที่ใช้ (kWh): "))
rate = float(input("อัตราต่อหน่วย (บาท/kWh): "))
subtotal = units * rate
vat = subtotal * 0.07
total = subtotal + vat
print(f"ค่าไฟก่อน VAT: {subtotal:.2f} บาท")
print(f"VAT 7%: {vat:.2f} บาท")
print(f"รวมทั้งสิ้น: {total:.2f} บาท")
# เฉลยตัวอย่าง 3: ค่าเฉลี่ยถ่วงน้ำหนัก (3 ส่วน)
s1 = float(input("คะแนนส่วนที่ 1: "))
w1 = float(input("น้ำหนักส่วนที่ 1 (%): "))
s2 = float(input("คะแนนส่วนที่ 2: "))
w2 = float(input("น้ำหนักส่วนที่ 2 (%): "))
s3 = float(input("คะแนนส่วนที่ 3: "))
w3 = float(input("น้ำหนักส่วนที่ 3 (%): "))
weighted = (s1*w1 + s2*w2 + s3*w3) / (w1 + w2 + w3)
print(f"ค่าเฉลี่ยถ่วงน้ำหนัก = {weighted:.2f}")