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