ภาพรวม
FizzBuzz เป็นโจทย์คลาสสิกที่ใช้สอบทักษะการเขียนโปรแกรมพื้นฐาน โดยต้องแสดงตัวเลข 1 ถึง n แต่เปลี่ยนเป็นคำเฉพาะตามกฎ:
- หาร 3 ลงตัว → "Fizz"
- หาร 5 ลงตัว → "Buzz"
- หาร 3 และ 5 ลงตัว → "FizzBuzz"
- อื่นๆ → แสดงตัวเลขนั้นๆ
ตัวอย่าง
อินพุต: 15
เอาต์พุต:
['1', '2', 'Fizz', '4', 'Buzz', 'Fizz', '7', '8', 'Fizz', 'Buzz', '11', 'Fizz', '13', '14', 'FizzBuzz']
โค้ด Python
class Solution(object):
def fizzBuzz(self, n):
result = []
for i in range(1, n+1):
if i % 3 == 0 and i % 5 == 0:
result.append("FizzBuzz")
elif i % 3 == 0:
result.append("Fizz")
elif i % 5 == 0:
result.append("Buzz")
else:
result.append(str(i))
return result
ob1 = Solution()
print(ob1.fizzBuzz(15))
วิธีเขียนแบบกระชับ (Concise)
def fizzbuzz(n):
return ['FizzBuzz' if i%15==0 else 'Fizz' if i%3==0 else 'Buzz' if i%5==0 else str(i) for i in range(1,n+1)]
จุดสำคัญ
- ตรวจสอบเงื่อนไข 15 (3×5) ก่อน เพื่อไม่ให้จับคู่กับ 3 หรือ 5 แยกกัน
- ใช้ modulo operator (
%) ตรวจสอบหารลงตัว - แปลงตัวเลขเป็นสตริงด้วย
str()เมื่อไม่ใช่กรณีพิเศษ