เขียนเอง · หา Bug แล้วเขียนต่อ
____ และเลือกเองว่าใช้ฟังก์ชัน/loop/comprehension ตัวไหน. . .
Important
เนื้อหานี้เป็น เนื้อหาเสริม เท่านั้น — เนื้อหาที่เป็นทางการดูได้จาก exam.cmu.ac.th
ไม่มี ____ · ไม่บอกว่าใช้ฟังก์ชัน / loop / comprehension ตัวไหน — ออกแบบเอง
เขียนฟังก์ชัน is_prime(n) ที่คืน True/False แล้วใช้ฟังก์ชันนั้นนับว่ามีจำนวนเฉพาะกี่ตัวในช่วง 2..30
คิดก่อน: แยกงานเป็น 2 ส่วน — (1) ฟังก์ชันตัดสิน 1 ตัว (มี loop + return ข้างใน) · (2) main วน for เรียกฟังก์ชันแล้วนับ
เขียนฟังก์ชัน stats(nums) ที่รับ list แล้วคืน ค่าน้อยสุด · มากสุด · ค่าเฉลี่ย (3 ค่าพร้อมกัน) แล้วเรียกใช้กับ [4, 8, 15, 16, 23, 42]
คิดก่อน: return คืนได้หลายค่าคั่นด้วย , (เป็น tuple) · ฝั่งเรียกรับด้วย lo, hi, avg = ...
ใช้ list comprehension บรรทัดเดียว สร้าง list ของกำลังสองของเฉพาะเลขคู่ ในช่วง 1..10
คิดก่อน: โครงคือ [ ประมวลผล for ตัวแปร in ช่วง if เงื่อนไข ] — ประมวลผล = x**2, เงื่อนไข = คู่
สร้าง 2D list ขนาด n × n ที่ช่องแถว i คอลัมน์ j มีค่า (i+1)*(j+1) (ตารางสูตรคูณ) แล้วหาผลรวมแนวทแยง (ช่องที่ i == j)
คิดก่อน: สร้างตารางด้วย nested comprehension [[... for j ...] for i ...] · แนวทแยงคือ table[i][i]
เขียน 2 ฟังก์ชันที่ ทำงานร่วมกัน: average(nums) คืนค่าเฉลี่ย · is_passed(nums) คืน True/False โดยเรียกใช้ average() (เกณฑ์ผ่าน = เฉลี่ย ≥ 50) แล้ววนพิมพ์ผลของนักศึกษาแต่ละคน
คิดก่อน: is_passed ไม่ต้องคำนวณเฉลี่ยเอง — ให้เรียก average() มาใช้ซ้ำ (นี่คือประโยชน์ของการแยกฟังก์ชัน)
def average(nums):
return sum(nums) / len(nums)
def is_passed(nums):
return average(nums) >= 50 # เรียกใช้ average()
names = ["Ann", "Bee", "Cat"]
scores = [[60, 70, 80], [40, 55, 30], [90, 85, 95]]
for i in range(len(names)):
if is_passed(scores[i]):
print(names[i], "ผ่าน")
else:
print(names[i], "ตก")Ann ผ่าน
Bee ตก
Cat ผ่าน
โค้ดเริ่มต้นมี บั๊ก 1 จุด และยังทำไม่ครบ — แก้บั๊กก่อน แล้วเขียนส่วนที่เหลือ
ฟังก์ชันนี้ควรคืนพื้นที่สี่เหลี่ยม แต่พิมพ์ออกมาเป็น None
งาน: (1) แก้บั๊ก · (2) เขียนต่อให้หาพื้นที่รวมของสี่เหลี่ยมหลายรูปใน list [(3,4), (5,2), (6,1)]
Important
บั๊ก: ฟังก์ชันคำนวณ a แต่ไม่มี return → คืน None · ต้อง return a (หรือ return w*h)
โค้ดนี้ควรได้กำลังสองของเลขคี่ แต่กลับได้เลขคู่
งาน: (1) แก้เงื่อนไขให้ถูก · (2) เขียนต่อให้พิมพ์ผลรวมของค่าใน result
Important
บั๊ก: x % 2 == 0 = เลขคู่ · ต้องการเลขคี่ → ใช้ x % 2 == 1
โค้ดนี้ควรรวมทุกค่าในตาราง 2 มิติ แต่ได้ผลไม่ครบ
งาน: (1) แก้ขอบเขตลูปในให้ถูก · (2) เขียนต่อให้พิมพ์ผลรวมของแต่ละแถวด้วย
Important
บั๊ก: ลูปในใช้ range(len(grid)) = จำนวนแถว (2) แต่ต้องวนตามคอลัมน์ → range(len(grid[i])) · ไม่งั้นตกคอลัมน์ที่ 3
แน่นพื้นฐาน Python แล้ว! ทบทวนรายโมดูลได้ที่ M9 Functions · M10 Comprehension & 2D
🏠 259201 — ทบทวนรวมพื้นฐาน Python | ภาควิชาวิศวกรรมคอมพิวเตอร์ คณะวิศวกรรมศาสตร์ มหาวิทยาลัยเชียงใหม่