Çözemediğim CodeWars sorusu

Arkadaşlar merhaba,

CodeWars üzerinden bir soru çözmeye çalışıyorum. Fakat bir türlü yapamadım.

Soru: Listedeki isimlerden; 4 harfli olanlar benim arkadaşım, 4 harfli olanlar arkadaşım değil. Hangileri bizim arkadaşımız olur?

Yani 4 harfli olanları çekmeye çalışıyorum.

Yazdığım kod:

def friend(x):
    x = ["Ryan", "Kieran", "Mark", "Source", "Ankara"]
    
    arkadaslarim = []
    
    for ismi in x:
        if ismi.len(ismi) == 4:
            arkadaslarim.append(ismi)
            
        print(arkadaslarim)

Nasıl çözebilirim?

Traceback (most recent call last):
  File "/workspace/default/src/codewars-test/codewars_test/test_framework.py", line 111, in wrapper
    func()
  File "tests.py", line 8, in basic_test_cases
    test.assert_equals(friend(["Ryan", "Kieran", "Mark",]), ["Ryan", "Mark"])
  File "/workspace/default/solution.py", line 7, in friend
    if ismi.len(ismi) == 4:
AttributeError: 'str' object has no attribute 'len'

Son durum:

def friend(x):
    x = ["Ryan", "Kieran", "Mark", "Source", "Ankara"]
    
    arkadaslarim = []
    
    for ismi in x:
        if ismi == 4:
            arkadaslarim.append(ismi)
            
    print(arkadaslarim)

NameError: name 'x' is not defined

Sıkıntı burada.
for isim in x dediğimizde listedeki isimler sırasıyla isim değişkenine atanıyor. Sonrasında bizim bu isim değişkeninin uzunluğunu kontrol etmemiz lazım. Bunun için isim.len(isim) yerine len(isim) yazmamız lazım.
Bunların dışında doğru. En sonda ise print(arkadaslarim) yerine sonucu return etmeliyiz.
yani return arkadaslarim

Teşekkür ederim, halen bir sorun var.

Son durum:

def friend(x):
    x = ["Ryan", "Kieran", "Mark", "Source", "Ankara"]
    
    arkadaslarim = []
    
    for ismi in x:
        if len(ismi) == 4:
            arkadaslarim.append(ismi)
            
        return print(arkadaslarim)

Halen olmuyor.

Yok hayır,
return arkadaslarim
Ayrıca döngünün dışında olmalı. Yani şu şekilde:

def friend(x):
    x = ["Ryan", "Kieran", "Mark", "Source", "Ankara"]
    
    arkadaslarim = []
    
    for ismi in x:
        if len(ismi) == 4:
            arkadaslarim.append(ismi)
            
    return arkadaslarim

Ayrıca cevabı CodeWars üzerinden kaydederken kendi tanımlamış olduğunuz listeyi silmelisiniz. Site fonksiyonunuza parametre olarak rastgele değerler girecektir.


Hocam sanırım halen bir sorun var.

Değilmiş hocam. Talimatlardaki isimleri yaptım, aynı.

Talimatlardaki isimler örnek içindir.

Peki nasıl silebilirim? Daha doğrusu dediğinizi tam anlayamadım.

def friend(x):  
    arkadaslarim = []
    
    for ismi in x:
        if len(ismi) == 4:
            arkadaslarim.append(ismi)
            
    return arkadaslarim

CodeWars sizin fonksiyonunuzdaki x parametresine rastgele listeler yollayacak. Yani talimatlardaki listeler örnek kullanım için yer alıyor. Sizin yapmanız gereken şey fonksiyonu yazmak ve istenen cevabı return etmek. Eğer sizden 4 harfli olan kelimeleri ayıklayıp, liste halinde return etmeniz isteniyorsa, yukarıdaki gibi bir kod kullanabilirsiniz.

1 Beğeni

He şimdi anladım. Anladığım kadarıyla x parametresine zaten isimler atanmış.

Teşekkür ederim, kod çalıştı.

1 Beğeni