หา Bug แล้วเขียนต่อ · โจทย์รวมข้ามโมดูล
if · loop · collection ในโจทย์เดียว โดยไม่บอกว่าใช้อะไร. . .
Important
เนื้อหานี้เป็น เนื้อหาเสริม เท่านั้น — เนื้อหาที่เป็นทางการดูได้จาก exam.cmu.ac.th
โค้ดเริ่มต้นมี บั๊ก 1 จุด และยังทำไม่ครบ — แก้บั๊กก่อน แล้วเขียนส่วนที่เหลือให้เสร็จ
โค้ดนี้ควรนับจำนวนที่หารด้วย 3 ลงตัวในช่วง 1..n แต่ผลออกมาผิด
งาน: (1) หาและแก้บั๊ก · (2) เขียนต่อให้พิมพ์ ผลรวม ของจำนวนเหล่านั้นด้วย
โค้ดนี้ควรหาค่ามากที่สุดในตาราง 2 มิติ แต่จะพังถ้าค่าทั้งหมดติดลบ
งาน: (1) แก้ค่าเริ่มต้นของ biggest ให้ถูก · (2) เขียนต่อให้บอก ตำแหน่ง (แถว, คอลัมน์) ของค่ามากสุดด้วย
Important
บั๊ก: ตั้ง biggest = 0 → ถ้าทุกค่าติดลบจะได้ 0 ผิด · ควรเริ่มที่ grid[0][0] (สมาชิกจริงตัวแรก)
โค้ดนี้ควรนับความถี่ของคำลง dict แต่รันแล้ว error
งาน: (1) แก้บั๊กที่ทำให้ error · (2) เขียนต่อให้หา คำที่พบบ่อยที่สุด
Important
บั๊ก: freq[w] += 1 ใช้ key ที่ยังไม่มีใน dict → KeyError · ต้องสร้าง freq[w] = 0 ก่อนถ้ายังไม่มี
{'apple': 3, 'banana': 2, 'cherry': 1}
apple 3
ผสมทุกทักษะในโจทย์เดียว · ไม่มี ____ และไม่บอกว่าต้องใช้ if/loop/collection ตัวไหน — ตัดสินใจเอง
มี list ของ dict ที่แต่ละคนมี list ของคะแนน จงพิมพ์ชื่อ + คะแนนเฉลี่ย (ทศนิยม 2 ตำแหน่ง) + สถานะ ผ่าน (เฉลี่ย ≥ 50) หรือ ตก แล้วสรุปว่ามีกี่คนที่ผ่าน
คิดก่อน: วนแต่ละคน → เฉลี่ยด้วย sum()/len() → if ตัดสินผ่าน/ตก → นับสะสม
students = [{"name": "Ann", "scores": [60, 70, 80]},
{"name": "Bee", "scores": [40, 55, 30]},
{"name": "Cat", "scores": [90, 85, 95]}]
passed = 0
for s in students:
avg = sum(s["scores"]) / len(s["scores"])
if avg >= 50:
status = "ผ่าน"
passed += 1
else:
status = "ตก"
print(f"{s['name']}: {avg:.2f} {status}")
print("จำนวนที่ผ่าน:", passed)Ann: 70.00 ผ่าน
Bee: 41.67 ตก
Cat: 90.00 ผ่าน
จำนวนที่ผ่าน: 2
มี dict ของสินค้า → จำนวนคงเหลือ จงพิมพ์รายการที่ต้องเติมสต็อก (เหลือ ≤ 5) พร้อมจำนวนที่เหลือ แล้วสรุปว่าต้องเติมกี่รายการ
คิดก่อน: วนทุก key ใน dict → if เช็กเกณฑ์ → เก็บชื่อที่เข้าเกณฑ์ไว้ใน list เพื่อนับตอนท้าย
เติมสต็อก: ปากกา (เหลือ 3)
เติมสต็อก: ยางลบ (เหลือ 5)
เติมสต็อก: ไม้บรรทัด (เหลือ 0)
รวมต้องเติม: 3 รายการ
มี list 2 มิติ — แต่ละแถวคือคะแนนของ 1 ทีม จงหาหมายเลขทีม (index) ที่มีคะแนนรวมสูงสุด พร้อมคะแนนรวมนั้น
คิดก่อน: ลูปซ้อน — ลูปนอกไล่แต่ละทีม, ลูปในบวกคะแนนของทีมนั้น · เก็บทีมที่ดีที่สุดไว้ (running max)
สำหรับเลข 1..n จงนับว่ามีกี่ตัวที่ หารด้วย 3 อย่างเดียว (fizz) · หารด้วย 5 อย่างเดียว (buzz) · หารด้วยทั้ง 3 และ 5 (fizzbuzz) · ไม่เข้าเงื่อนไขใด (other) แล้วเก็บผลลง dict
คิดก่อน: วน for · if-elif โดยเช็ก หารด้วย 15 ก่อน (ไม่งั้นไม่มีวันเจอ fizzbuzz) · บวกค่าเข้า key ใน dict
เก่ง control flow ขึ้นแล้ว! กลับไปทบทวนรายโมดูลได้ที่ M5 · M6 · M7 · M8
🏠 259201 — ทบทวนรวม Control Flow | ภาควิชาวิศวกรรมคอมพิวเตอร์ คณะวิศวกรรมศาสตร์ มหาวิทยาลัยเชียงใหม่