Codewars đếm nguyên âm python

Ở đây, chúng tôi đã lấy một chuỗi được lưu trữ trong ip_str. Sử dụng phương pháp casefold[], chúng tôi làm cho nó phù hợp để so sánh trường hợp. Về cơ bản, phương thức này trả về một phiên bản chữ thường của chuỗi

Chúng tôi sử dụng phương pháp từ điển fromkeys[] để xây dựng một từ điển mới với mỗi nguyên âm là khóa của nó và tất cả các giá trị bằng 0. Đây là khởi tạo của đếm

Tiếp theo, chúng tôi lặp lại chuỗi đầu vào bằng vòng lặp for

Trong mỗi lần lặp lại, chúng tôi kiểm tra xem ký tự có trong các khóa từ điển hay không [True nếu đó là nguyên âm] và tăng giá trị lên 1 nếu đúng

Mã nguồn. Sử dụng danh sách và hiểu từ điển

# Using dictionary and list comprehension

ip_str = 'Hello, have you tried our tutorial section yet?'

# make it suitable for caseless comparisions
ip_str = ip_str.casefold[]

# count the vowels
count = {x:sum[[1 for char in ip_str if char == x]] for x in 'aeiou'}

print[count]

Đầu ra của chương trình này giống như trên

Ở đây, chúng tôi đã lồng một cách hiểu danh sách bên trong cách hiểu từ điển để đếm các nguyên âm trong một dòng

Tính năng hiểu từ điển chạy cho tất cả các ký tự nguyên âm và tính năng hiểu danh sách bên trong tính năng hiểu từ điển sẽ kiểm tra xem có ký tự nào trong chuỗi khớp với nguyên âm cụ thể đó không

Cuối cùng, một danh sách có 1 giây được tạo cho số lượng của mỗi ký tự nguyên âm. Phương pháp sum[] được sử dụng để tính tổng các phần tử cho mỗi danh sách

Bộ sưu tập là một cách để bạn tổ chức các bài kata để bạn có thể tạo thói quen luyện tập của riêng mình. Mọi bộ sưu tập bạn tạo đều được công khai và tự động chia sẻ với các chiến binh khác. Sau khi bạn đã thêm một số bài kata vào một bộ sưu tập, bạn và những người khác có thể luyện tập bài kata có trong bộ sưu tập

Bắt đầu ngay bây giờ bằng cách tạo một bộ sưu tập mới

Bạn phải đợi cho đến khi kiếm được ít nhất 20 vinh dự trước khi có thể tạo bộ sưu tập mới

Bộ sưu tập là một cách để bạn tổ chức các bài kata để bạn có thể tạo thói quen luyện tập của riêng mình. Mọi bộ sưu tập bạn tạo đều được công khai và tự động chia sẻ với các chiến binh khác. Sau khi bạn đã thêm một số bài kata vào một bộ sưu tập, bạn và những người khác có thể luyện tập bài kata có trong bộ sưu tập

Bắt đầu ngay bây giờ bằng cách tạo một bộ sưu tập mới

Bạn phải đợi cho đến khi kiếm được ít nhất 20 vinh dự trước khi có thể tạo bộ sưu tập mới

Cho một chuỗi, đếm số nguyên âm trong đó. Các nguyên âm là "aeiou" và các chữ cái sẽ được viết thường

Giải pháp

Các bài kiểm tra

# pypi
from expects import equal, expect

expect[vowel_count["a"]].to[equal[1]]
expect[vowel_count["rmnl"]].to[equal[0]]
expect[vowel_count["a mouse is not a house"]].to[equal[10]]

Chức năng

VOWELS = set["aeiou"]

def vowel_count[letters: str] -> int:
    """Counts the number of vowels in the input

    Args:
     letters: lower-cased string to check for vowels

    Returns:
     count of vowels in the letters
    """
    return sum[1 for letter in letters if letter in VOWELS]

lựa chọn thay thế

Một giải pháp đã sử dụng các biểu thức chính quy và phương thức findall. Điều này có vẻ tốt hơn theo nghĩa tổng quát, nhưng tôi nghĩ rằng findall sẽ tạo danh sách chứ không phải trình tạo nên có thể không hiệu quả về mặt không gian và có thể chậm hơn. Những người khác đã sử dụng phương pháp chuỗi python - count. Tôi nghĩ vấn đề này dễ đến mức thực sự không có nhiều thứ bạn có thể làm mà không quá phức tạp

Một thẻ đã tồn tại với tên chi nhánh được cung cấp. Nhiều lệnh Git chấp nhận cả tên thẻ và tên nhánh, vì vậy việc tạo nhánh này có thể gây ra hành vi không mong muốn. Bạn có chắc chắn muốn tạo nhánh này không?

Chủ Đề