Bu kodda döndürülmüş başarılı bir kelime sonrasındaki kelime atlanıyor. Bu kodu nasıl başarılı bir şekilde çalıştırabilirim. Ve neden bazı kelimeleri atlıyor anlatırsanız sevinirim. Tşekkürler.
ikiAyikla = []
for kelime in self.testingkelime:
for hece in ikiHeceli:
if kelime[:2] == hece:
ikiAyikla.append(kelime)
self.testingkelime.remove(kelime)
print(f"{ikiAyikla}\n{ucAyikla}")
print(self.testingkelime)
Çıktı:
Tek hecei, üç harfli: hal
['hurafe', 'hadi', 'helal', 'harun']
['harla', 'horla']
['hüda', 'haram', 'helak', 'hakan'] # almadıkları bu
Bir almış, bir almamış. Neden böyle oluyor? Aldığnın hemen sonrasında bulunanı bırakıyor.
Çünkü döngü içerisinde, döngü için kullandığınız listeden eleman çıkarıyorsunuz.
testingkelime isimli listenin kopyasını oluşturup, döngü için bu kopyayı kullanacak olursanız sorun çözülecektir.
testingkelime = ['hurafe','hüda','hadi','haram','helal','hal','helak','harla','harun','hakan','horla']
ikiHeceli = ['ha','he','hu','hü']
kopya = testingkelime.copy()
ikiAyikla = []
for kelime in kopya:
for hece in ikiHeceli:
if kelime[:2] == hece:
ikiAyikla.append(kelime)
testingkelime.remove(kelime)
break
print(ikiAyikla)
print(testingkelime)
bir kelime hem 2 heceliye hem 3 heceliye giriyorsa, ama sorgulamayı 2 heceye göre yapıp dogru sonucu nasıl verir ki. ucheceli ve ucsonra yı nerelerde kullanmayı planlıyorsun. burada sanki hecelerin uzunluğuna göre de bir işlem yapmalısın gibime geldi.
Edit: normalde heceleme 2 harf oluyor. “haram” kelimesi senin 2 li ve 3 lü hecelerine göre hem “ha” hem de “har” kısmında nasıl olacak. bunun yerine kelimenin uzunluğunu alıp kelime %2 ==0 koşuluna uyuyorsa ilk önce 2 li heceye göre işlem yapsın değilse 3 lü ye göre işlem yapsın gibi bir sonuç çıkarttım.