On this page
โจทย์พื้นฐาน (ตัวแปร / เงื่อนไข / loop)
วอร์มอัพด้วยโจทย์ที่ใช้ความรู้พื้นฐานตรง ๆ — ลองทำเองก่อนเปิดเฉลยทุกข้อ
โจทย์ชุดนี้ฝึกตรรกะพื้นฐาน: รับค่า ตัดสินใจ และวนซ้ำ ถ้าทำชุดนี้คล่องแล้วค่อยไปหัวข้อถัดไป แนะนำเปิด replit.com แล้วพิมพ์เอง
ข้อ 1 — เลขคู่หรือคี่ 🟢
รับจำนวนเต็มจากผู้ใช้ แล้วบอกว่าเป็นเลขคู่หรือเลขคี่
เลขคู่คือเลขที่หารด้วย 2 ลงตัว (เศษเป็น 0) ใช้ตัวดำเนินการ % เช็คเศษ
เฉลย + คำอธิบาย
n = int(input("ใส่เลข: "))
if n % 2 == 0:
print(f"{n} เป็นเลขคู่")
else:
print(f"{n} เป็นเลขคี่")หัวใจคือ n % 2 ให้เศษจากการหารด้วย 2 ถ้าเศษเป็น 0 แปลว่าหารลงตัว = เลขคู่ อย่าลืม int() เพราะ input() ให้ str
ข้อ 2 — มากที่สุดใน 3 ตัว 🟢
รับเลข 3 ตัว แล้วบอกว่าตัวไหนมากที่สุด (ลองทำทั้งแบบใช้ if และแบบใช้ max())
เฉลย + คำอธิบาย
a = int(input("a: "))
b = int(input("b: "))
c = int(input("c: "))
# แบบ if
biggest = a
if b > biggest:
biggest = b
if c > biggest:
biggest = c
print("มากสุด:", biggest)
# แบบสั้นด้วย max()
print("มากสุด:", max(a, b, c))แบบ if: เริ่มสมมติ a มากสุด แล้วเทียบกับตัวอื่นทีละตัว ถ้าเจอที่มากกว่าก็อัปเดต เทคนิคนี้ (เก็บค่าที่ดีที่สุดไว้แล้วเทียบ) ใช้ได้กับการหาค่ามาก/น้อยในลิสต์ด้วย
ข้อ 3 — สูตรคูณ 🟢
รับเลข n แล้วพิมพ์สูตรคูณแม่ n ตั้งแต่ n×1 ถึง n×12 เช่น n=5 พิมพ์ 5 x 1 = 5 ... 5 x 12 = 60
เฉลย + คำอธิบาย
n = int(input("แม่สูตรคูณ: "))
for i in range(1, 13): # 1 ถึง 12
print(f"{n} x {i} = {n * i}")range(1, 13) ให้ตัวเลข 1 ถึง 12 (ไม่รวม 13) แล้วใช้ f-string จัดรูปบรรทัดผลลัพธ์ นี่คือ pattern พื้นฐานของการวนพิมพ์ตาราง
ข้อ 4 — ผลรวมและค่าเฉลี่ยจนกว่าจะใส่ 0 🟡
รับตัวเลขไปเรื่อย ๆ จนกว่าผู้ใช้พิมพ์ 0 แล้วแสดงผลรวมและค่าเฉลี่ยของตัวเลขที่ใส่มา (ไม่นับ 0)
ใช้ while loop ที่วนจนกว่าค่าที่รับจะเป็น 0 เก็บผลรวมและจำนวนตัวเลขไว้ในตัวแปร ระวัง edge case: ถ้าใส่ 0 ทันทีจะหารด้วยศูนย์!
เฉลย + คำอธิบาย
total = 0
count = 0
while True:
n = int(input("ใส่เลข (0 เพื่อจบ): "))
if n == 0:
break
total += n
count += 1
if count == 0:
print("ไม่ได้ใส่ตัวเลข")
else:
print(f"ผลรวม {total}, เฉลี่ย {total / count:.2f}")while True วนไม่รู้จบ แล้วใช้ break ออกเมื่อเจอ 0 — เป็น pattern ยอดนิยมของ "วนจนกว่าจะเจอเงื่อนไขหยุด" ส่วน if count == 0 คือ edge case กันหารด้วยศูนย์ การคิดถึงเคสนี้คือสิ่งที่แยกโค้ดดีออกจากโค้ดที่พัง
ข้อ 5 — แปลงเกรด 🟡
รับคะแนน 0–100 แล้วแปลงเป็นเกรด: 80+ = A, 70–79 = B, 60–69 = C, 50–59 = D, ต่ำกว่า 50 = F และถ้าคะแนนไม่อยู่ในช่วง 0–100 ให้แจ้งว่าไม่ถูกต้อง
เฉลย + คำอธิบาย
score = int(input("คะแนน: "))
if score < 0 or score > 100:
print("คะแนนไม่ถูกต้อง")
elif score >= 80:
print("A")
elif score >= 70:
print("B")
elif score >= 60:
print("C")
elif score >= 50:
print("D")
else:
print("F")เช็คความถูกต้อง (validation) ก่อนเป็นอันดับแรก จากนั้นเรียงเงื่อนไขจากมากไปน้อย เพราะ elif หยุดที่อันแรกที่จริง ถ้าสลับลำดับผิด คนได้ 90 อาจได้เกรด D
ข้อ 6 — นับถอยหลังและสามเหลี่ยมดาว 🟡
รับเลข n แล้ว (ก) พิมพ์นับถอยหลังจาก n ถึง 1 (ข) พิมพ์สามเหลี่ยมดาว n แถว แถวที่ i มีดาว i ตัว
เฉลย + คำอธิบาย
n = int(input("n: "))
# (ก) นับถอยหลัง
for i in range(n, 0, -1): # จาก n ถึง 1 ก้าวลงทีละ 1
print(i)
# (ข) สามเหลี่ยมดาว
for i in range(1, n + 1):
print("*" * i) # "*" * 3 = '***'range(n, 0, -1) นับถอยหลัง (เริ่ม n หยุดก่อน 0 ก้าว -1) ส่วน "*" * i ใช้คุณสมบัติว่าคูณ string ได้ = ทำซ้ำตัวอักษร เทคนิคเล็ก ๆ ที่ทำให้โค้ดสั้น
ลองดัดแปลงโจทย์เอง เช่น ข้อ 6 ทำสามเหลี่ยมกลับหัว หรือข้อ 5 เพิ่มเกรด A+ สำหรับ 90+ การคิดโจทย์เองคือการฝึกขั้นถัดไป