Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Kiểm tra Pangram trong Python dùng Set()


Pangram là câu chứa tất cả 26 chữ cái tiếng Anh ít nhất 1 lần. Không phân biệt hoa/thường. Không yêu cầu "perfect pangram" (mỗi chữ cái đúng 1 lần).

Thuật toán

  1. Chuyển chuỗi thành chữ thường (hoặc hoa).
  2. Tạo set từ chuỗi → tự động loại trùng và non-alphabet.
  3. Lọc chỉ giữ chữ cái a-z.
  4. Kiểm tra độ dài set == 26.

Ví dụ

def check_pangram(text):
    # 1. Lowercase
    text = text.lower()
    # 2. Set ký tự
    chars = set(text)
    # 3. Lọc chỉ a-z
    alphabet = {ch for ch in chars if 'a' <= ch <= 'z'}
    # 4. Kiểm tra
    return len(alphabet) == 26

# Test
tests = [
    "The quick brown fox jumps over the lazy dog",  # Classic pangram
    "This is not a pangram",
    "Pack my box with five dozen liquor jugs",      # Another pangram
]

for t in tests:
    result = "LÀ" if check_pangram(t) else "KHÔNG LÀ"
    print(f"'{t}' -> {result} pangram")

Kết quả

'The quick brown fox jumps over the lazy dog' -> LÀ pangram
'This is not a pangram' -> KHÔNG LÀ pangram
'Pack my box with five dozen liquor jugs' -> LÀ pangram

Cách viết gọn (One-liner)

is_pangram = lambda s: len({c for c in s.lower() if c.isalpha()}) == 26

# Hoặc dùng set so sánh
import string
is_pangram_v2 = lambda s: set(string.ascii_lowercase).issubset(s.lower())

Kết luận

Dùng set + isalpha() hoặc string.ascii_lowercase là cách pythonic, ngắn gọn, hiệu năng tốt để kiểm tra pangram.