CodeWars çözemediğim soru

Arkadaşlar merhaba,

Anlayabildiğim kadarıyla, bana sesli harf sayısını soruyor. Ben de yapmaya çalıştım ama bir türlü yapamadım. Hatam nedir?

Yazdığım kod:

def get_count(sentence):
    sesliharfler = []
    for x in sentence:
        if x == "a":
            sesliharfler.append("a")
            
        if x == "e":
            sesliharfler.append("e")
            
        if x == "i":
            sesliharfler.append("i")
            
        if x == "o":
            sesliharfler.append("o")
            
        if x == "u":
            sesliharfler.append("u")
            
        if x == "y":
            sesliharfler.append("y")
            
    return print(len(sesliharfler))
kelime = input("Kelimeyi giriniz >> ")

sesli_harflar = 0

for i in kelime:

    if i == "a" or i == "e" or i == "i" or i == "o" or i == "u":
        sesli_harflar += 1

print("Sesli harf sayısı >> {}".format(sesli_harflar))

bu veriyor

3 Beğeni

Merhaba.
Bende alternatif bir çözüm sunayım:

def sesli_harf_sayaci(kelime):
  sesli_harfler = "aeıioöuü"
  sayac = 0
  for i in set(kelime):
    if i in sesli_harfler:
      sayac += 1
  return f"{kelime.capitalize()} kelimesinde "+str(sayac)+" adet sesli harf bulunmakta"
print(sesli_harf_sayaci("merhaba"))
2 Beğeni
get_count = lambda word: len([l for l in word if l in "aeiou"])

Fonksiyonel:

get_count = lambda word: len(list(filter(lambda l: l in "aeiou", word)))

Point-free:

import functools
import operator
compose = lambda f, g: lambda *args, **kwargs: f(g(*args, **kwargs))
get_count = compose(compose(len, list), functools.partial(filter, functools.partial(operator.contains, "aeiou")))
6 Beğeni