Merhaba, string de bir kelime belirleyip o kelimenin kaç kere geçtiğini bulmam lazım, aslında count kullanabilirdim ancak bir sorun var.
Mesela basit bir cümleden örnek verelim ve sonucu görelim:
>>> "Kemal okula mum al".count("al")
2
benim beklediğim sonuç 1 yani sadece sondaki “al” ı bulması lazım ama “Kemal” deki “al” ı da buluyor. re işe yarayabilir diye düşünüyorum ama re den anlamadığım için yapamadım
def kelimeyi_bul(cumle,kelime):
uzunluk = len(kelime)
sayac = 0
for i in cumle.split():
if uzunluk == len(i):
sayac += 1
# print(cumle.split())
print(f"{kelime} kelimesi {sayac} kez geçiyor.")
kelimeyi_bul("kemal okula mum al","al")
(Ben, Benim penceremden böyle görürdüm)
Umarım yardımcı olur fakat, üstteki insanların kod paylaşmadıysa bir bildikleri olduğundan bunu, kendince bir çözüme varamadığın sıra açmanı tavsiye ederim.
Edit: Sadece gösterdiğin örnek üzerine üretilmiş bir fikir, daha da kafa yorarak stabil olmasını sağlayabilirsin
def kelimeyi_bul(cumle,kelime):
sayac = 0
for i in cumle.split():
for j in kelime.split():
if i in j:
sayac += 1
print(f"{kelime} kelimesi {sayac} kez geçiyor.")
kelimeyi_bul("kemal okula mum al","al")
hocam tabikide bu çözüm sadece arkadaşın söylediği gibi kemal kelimesinde olan değil de ayrı duran kelimeyi yani al olan kelimenin kaç tane olduğunu söylüyor. kapsamlı düşünüp sizin verdiğiniz bir örnek üzerinden bakıldığında tabikide eksiği çok fazla. ama ilk attığım koda göre ikinci attığımda yaptığım değişiklikler gibi bunda da yapılarak sizin dediğiniz örneğin içinde olan kelimeyi de sayarak istenilen sonucu verdirtebilir.
haklısınız içinde herhangi bir al sözcüğü olan her kelimeyi cümlede aranacak kelimenin sayısı kadar döndürüyor. Bu hatalı koda bakıldığında alsancak kelimesi de sizin dediğinizle benzer bir durum yaşatıyor.
Kısmen
def kelimeyi_bul(cumle,kelime):
sayac = 0
for i in cumle.split():
for j in kelime.split():
if i in j and len(i) == len(j):
sayac += 1
print(f"{kelime} kelimesi {sayac} kez geçiyor.")
kelimeyi_bul("kemal okula mum al","albatros")
Aynı cümle üzerinden kodda ufak bir değişiklik yapıldığında bu sorunda ortadan kalkıyor. Düşündükçe üstesinden gelinebilir giibi hocam. Siz ne dersiniz ? (umarım başka bug yoktur )
En son yolladığınız örneği de denedim ve sanırım başka bug kalmadı.
Edit: az önce Then_Shiffman’in yukarıda verdiği örneğin tersini denemişim ama kodun son halinde Then_Shiffman’in verdiği örnekte hatasız çalışıyor.