Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
6
Cevap
2152
Tıklama
0
Öne Çıkarma
String index out of range hatası
T
8 yıl
Yüzbaşı
Konu Sahibi

Merhaba, python için edx kursu alıyorum. Kurs için bir proje yapmam gerekiyor. Proje, bir cümleyi alıp o cümlenin içindeki kelimelerden "g" harfinden sonraki harfler ile başlayanları yazdırmamı istiyor. Yani alfabetik olarak "g"den sonra gelen harflerle başlayan kelimeleri yazdırıyor.
Benim düşündüğüm program şöyle bir şey :

quote_1 = input("write a quote here: ")
quote = quote_1 + " "
for character in quote:
if character.isalpha():
word += character
else:
if word.lower() >= "h":
print(word.upper())
word = ""
else:
word = ""

Program istediğim gibi çalıştı, bir sorun yok ama if word.lower() >= "h": olan kısımda ben kelimenin baş harfinin "g"den sonra gelmesini istiyorum. Yani if word[0].lower() gibi bir şey denedim, index 0'ı değerlendirmek için; ama bu şekilde yazarsam "string index out of range" hatası veriyor, nedeni ne olabilir ?
Programlamada çok yeniyim, bu yüzden anlatmak istediğimi tam anlatamadım; kusura bakmayın. Umarım yardımcı olabilirsiniz.

Edit: Kolay okunabilmesi için ss koydum.
< Resime gitmek için tıklayın >





< Bu mesaj bu kişi tarafından değiştirildi The Dread Wolf -- 2 Eylül 2017; 19:55:4 >

T
8 yıl
Yüzbaşı
Konu Sahibi

Up



< Bu ileti mobil sürüm kullanılarak atıldı >

İ
8 yıl
Yüzbaşı

Şöyle yaptım ve bir hata almıyorum.

< Resime gitmek için tıklayın >

Edit: En sondaki else de word değil words olucak.





< Bu mesaj bu kişi tarafından değiştirildi imammmm -- 3 Eylül 2017; 14:32:50 >

< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.
T
8 yıl
Yüzbaşı
Konu Sahibi

Normalde de çalıştı program ama benim takıldığım kısım şu :

If words.lower() >= "h":

Bu kısımda kelimenin ilk harfinin alfabetik olarak "g"den büyük olmasını istiyoruz ya ben dedim ilk harfe bakacaksak index 0a bakayım. Yani

If words[0].lower() >= "h": gibi bir kod yazamıyor muyuz ?

Hem .lower() hem de [0] kullanmak hatalı mı oluyor yani ?

Bu kısmı anlayamadım da



< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 2 cevap geldi.

Bu mesajda bahsedilenler: @imammmm
İ
8 yıl
Yüzbaşı

Hocam bence asıl sıkıntı word isimli string dizinin belli boyutlarda olmaması. Girilen inputa göre değişiyor. O kısımda bir sıkıntı var bence.



< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @Luxurian
A
8 yıl
Yarbay

ilk kelimeyi yazdırdıktan sonra else ile word="" yapıyoruz ya sonrakinde
.isalpha( her neyse bu :D) olan yer ile wordu doldurmazsak word[0] diye bir şey olmuyor ama oradaki kod çalışıyor ve bulamayınca hata veriyor
If words[0].lower() >= "h": # böyle bir şey yazabiliriz sorun çıkartmıyor başka yerde az önce denedim
ben böyle anladım ben de pek bir şey bilmiyorum

edit: ilk else yerine " elif bool(word): " veya " elif word !="": " yazarsak word boşsa çalışmaz ve sonraki adıma geçmez devam eder, bu şekilde sorun olmaz muhtemelen





< Bu mesaj bu kişi tarafından değiştirildi alimmm78 -- 4 Eylül 2017; 11:29:53 >

< Bu ileti mini sürüm kullanılarak atıldı >


Bu mesajda bahsedilenler: @Luxurian
T
8 yıl
Yüzbaşı
Konu Sahibi

Anladım sanırım, teşekkürler



< Bu ileti mobil sürüm kullanılarak atıldı >


Bu mesajda bahsedilenler: @alimmm78 , @imammmm
DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.