Lời Mở Đầu
Bạn đã bao giờ tự hỏi làm thế nào để tính tổng tất cả các số chẵn từ 1 đến một số bất kỳ bằng Python chưa? Bài viết này sẽ giới thiệu đến bạn 6 phương pháp độc đáo và thú vị để giải quyết bài toán kinh điển này. Từ cách tiếp cận truyền thống sử dụng vòng lặp for
và while
, chúng ta sẽ cùng nhau khám phá sức mạnh của list comprehension
, generator expression
và cả những hàm hữu ích như sum
và reduce
. Hãy sẵn sàng để mở mang kiến thức lập trình Python của bạn nhé!
Các Hàm Python Hữu Ích
Trước khi bắt đầu, hãy cùng điểm qua một số hàm Python sẽ đồng hành cùng chúng ta trong hành trình này:
range()
: Hàm này giúp tạo ra một chuỗi số nguyên. Bạn có thể chỉ định điểm đầu, điểm cuối và bước nhảy cho chuỗi số này.List Comprehension
: Đây là cách viết code siêu ngắn gọn để tạo danh sách trong Python chỉ với một dòng duy nhất.sum()
: Hàm này rất đơn giản, nó giúp tính tổng của tất cả các phần tử trong một danh sách hoặc một chuỗi số.reduce()
: Hàm này hơi phức tạp hơn một chút, nó cho phép bạn áp dụng một hàm (như là cộng) lên tất cả các phần tử trong một danh sách theo một cách tuần tự. Để sử dụng hàm này, bạn cần import modulefunctools
.Generator Expression
: Giống nhưlist comprehension
nhưng thay vì tạo ra một danh sách, nó sẽ tạo ra một generator. Generator là một kỹ thuật nâng cao giúp tiết kiệm bộ nhớ bằng cách chỉ tạo ra giá trị khi cần thiết.
Cách 1: Vòng Lặp for
- Người Bạn Thân Thuộc
Đây là cách tiếp cận đơn giản và dễ hiểu nhất, đặc biệt là cho những người mới bắt đầu học Python.
def sum_even_with_for(n): total = 0 for i in range(2, n + 1, 2): total += i return total n = int(input("Nhập số nguyên dương n: ")) print("Tổng các số chẵn từ 2 đến", n, "là:", sum_even_with_for(n))
Cách 2: Vòng Lặp while
- Linh Hoạt Và Mạnh Mẽ
Vòng lặp while
cho phép bạn lặp đi lặp lại một đoạn code cho đến khi một điều kiện không còn đúng nữa.
def sum_even_with_while(n): total = 0 i = 2 while i <= n: total += i i += 2 return total n = int(input("Nhập số nguyên dương n: ")) print("Tổng các số chẵn từ 2 đến", n, "là:", sum_even_with_while(n))
Cách 3: List Comprehension
& sum()
- Ngắn Gọn Và Sành Điệu
Đây là cách viết code Python "thành thần" mà bất kỳ lập trình viên Python nào cũng muốn khoe.
def sum_even_with_list_comprehension(n): return sum([i for i in range(2, n + 1, 2)]) n = int(input("Nhập số nguyên dương n: ")) print("Tổng các số chẵn từ 2 đến", n, "là:", sum_even_with_list_comprehension(n))
Cách 4: Công Thức Toán Học - Nhanh Như Chớp
Nếu bạn yêu thích toán học, bạn có thể sử dụng công thức tính tổng của dãy số học để giải quyết bài toán này một cách cực kỳ nhanh chóng.
def sum_even_with_formula(n): if n % 2 == 0: return (n // 2) * (n + 2) else: return ((n + 1) // 2) * (n + 1) n = int(input("Nhập số nguyên dương n: ")) print("Tổng các số chẵn từ 2 đến", n, "là:", int(sum_even_with_formula(n)))
Cách 5: reduce()
& lambda
- Chuyên Gia Xử Lý Danh Sách
Đây là cách tiếp cận "hơi bị pro" sử dụng hàm reduce()
từ module functools
và hàm ẩn danh lambda
để tính tổng các số chẵn.
from functools import reduce def sum_even_with_reduce(n): return reduce(lambda x, y: x + y, range(2, n + 1, 2)) n = int(input("Nhập số nguyên dương n: ")) print("Tổng các số chẵn từ 2 đến", n, "là:", sum_even_with_reduce(n))
Cách 6: Generator Expression
& sum()
- Tiết Kiệm Bộ Nhớ
Tương tự như list comprehension
nhưng generator expression
giúp bạn tiết kiệm bộ nhớ hơn khi làm việc với dữ liệu lớn.
def sum_even_with_generator(n): return sum(i for i in range(2, n + 1, 2)) n = int(input("Nhập số nguyên dương n: ")) print("Tổng các số chẵn từ 2 đến", n, "là:", sum_even_with_generator(n))