Bir string'de geçen karakterin bütün indekslerini bulmak

a = 0
c = -1
index_list = []
fert = input("Metin Girin: ")
w = fert.index(fert[-1])
aranan_harf = input("Aramak istediğiniz Harfi girin: ")
for k in fert:
if k == aranan_harf:
index_list.append(fert.find(k))
a+=1
print(index_list,a)

*Ben burda metindeki harflerin indekslerini bastırmak isteyince sadece harfin ilk konumundaki indeksini
alıyor.Nasıl harfin bütün indekslerini bastırabilirim?

fert.find(k) ile aynı harfin index numarasını bulmuş olursun ve sürekli sıralamada ilk çıkan harfin index numarasını dönderir. Bunun yerine tanimladığın a değişkenini kullanırsan isteğine ulaşmış olursun.

a = 0
c = -1
index_list = []
fert = input("Metin Girin: ")
w = fert.index(fert[-1])
aranan_harf = input("Aramak istediğiniz Harfi girin: ")
for k in fert:
    if k == aranan_harf:
        index_list.append(a)
    a+=1
print(index_list,a)
3 Beğeni
degisken = 0
for ...:
    ...
    degisken += 1

yerine enumerate var:

metin = ...
aranan_harf = ...

indeksler = []
for indeks, harf in enumerate(metin):
    if harf == aranan_harf:
        indeksler.append(indeks)

“[ ] - for - if? - append” yerine de liste üreteçleri var

indeksler = [indeks for indeks, harf in enumerate(metin) if harf == aranan_harf]

Veya aynı şey birçok satırda

indeksler = [indeks
             for indeks, harf in enumerate(metin)
             if harf == aranan_harf]

Python dahilinde pek tercih edilmese de başka dillerde tercih edilebilen yöntemler:

# düzenli ifadeler ile
import re
indeksler = [match.start() for match in re.finditer(aranan_harf, metin)]

(aranan_harf gerçekten bir harf değilse re.escape(aranan_harf) gerekebilir.)

# str.find & while ile
# := için 3.8+ ister

indeksler = []
baslangic = 0  # nereden itibaren bakılıyor
while (indeks := metin.find(aranan_harf, baslangic)) != -1:
    indeksler.append(indeks)
    baslangic += indeks + 1  # bir sonraki arama, bulunan
                             # indeksin bir sonrasından başlıyor
2 Beğeni