String index out of range hatası

python
#1
print("Uygulama")
print("""Bu uygulamanın amacı girdiğiniz metinde
yine sizin girdiğiniz sayı , harf veya 
işaretin kaç tane olduğunu bulmaktır.""")

metin = input("Metninizi giriniz : ")
while not metin:
    print("Bu alan boş bırakılamaz !!!")
    metin = input("Metninizi giriniz : ")

isaret = input("Arayacağınız sayı , harf veya işareti giriniz : ")

anahtar = 0
toplam = 0

while anahtar <= len(metin):
    if isaret == metin[anahtar]:
        toplam += 1
    anahtar += 1
print(toplam)

amacım kullanıcının verdiği metinde yine kullanıcının verdi sayı , harf veya işaretin kaç tane olduğunu bulmak ama “String index out of range” adlı hatayı alıyorum.
Not : eğer kullanıcın aramak istediği harf , sayı veya işaret girilen metinde yoksa sorunsuz olarak 0 yazıyor.

0 Likes

#2

Eğer altında dönen algoritmayı anlamak gibi bir derdiniz yoksa string nesnesinin count() methodunu kullanabilirsiniz.

In [1]: text = "Hey! Python mükemmel bir dil"
In [2]: sign = "m"
In [3]: text.count(sign)
Out[3]: 3
1 Like

#3

cevap verdiğiniz için teşekkür ederim yeni başladığım için şimdilik programım çalışsın yeterli ama ilerde mantığını anlamaya çalışacağım. :grinning::grinning:

0 Likes

#4

Hangi string’in hangi index’i range disiymis?

metin ve anahtar degiskenlerinin (ve metin[anahtar]'in) degerlerini yazdirirsan sorun acik olacaktir.

0 Likes

#5

if isaret == metin[anahtar] :
bu satırda hata olduğunu söylüyor.

0 Likes

#6

Biliyorum.​​​​​​​​​​

0 Likes

#7

Hata aldığın satırın hemen öncesinde değerleri print ile kontrol eder misin?
Büyük ihtimalle metin “” şeklinde boş geldiği için oluyor. Onu da sınırlaman gerek.

0 Likes

#8

Su benim dedigimin aynisi mi yani? :


Hayir. Benim dedigimi/kendi dedigini yaparsan sorunun bu olmadigini goreceksin.

0 Likes

#9

Hatanın sebebi şu:

while anahtar <= len(metin):

burda küçük eşittir yerine küçüktür kullanman gerekir. metin 5 karakter olabilir ama indexleme 0 dan başladığı için metnin son değerinin indexi 4 olur. metin[5] yaparsan tabiki index hatası verir.

0 Likes

#10

cevabınız için teşekkür ederim :grinning: :grinning:

0 Likes