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'
def friend(x):
x = ["Ryan", "Kieran", "Mark", "Source", "Ankara"]
arkadaslarim = []
for ismi in x:
if ismi == 4:
arkadaslarim.append(ismi)
print(arkadaslarim)
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
def friend(x):
x = ["Ryan", "Kieran", "Mark", "Source", "Ankara"]
arkadaslarim = []
for ismi in x:
if len(ismi) == 4:
arkadaslarim.append(ismi)
return print(arkadaslarim)
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.
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.