Xem thêm

Sáng Tạo Với Python: 6 Cách Tính Tổng Số Chẵn Từ 1 Đến n

Huy Erick
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...

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 forwhile, 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ư sumreduce. 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 module functools.
  • 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))
Kết quả của cách 1
Kết quả của cách 1

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))
Kết quả của cách 2
Kết quả của cách 2

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))
Kết quả của cách 3
Kết quả của cách 3

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)))
Kết quả của cách 4
Kết quả của cách 4

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))
Kết quả của cách 5
Kết quả của cách 5

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))
Kết quả của cách 6
Kết quả của cách 6
1