Şimdi Ara

Bir gelebilir misiniz acemiyim

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
6
Cevap
0
Favori
196
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • #girdiğimiz kelimelerin hepsinin harfini büyütüp yazdırmaya çalışıyorum ama olmuyor hatam nerede i dönüşürken sıkıntı veriyor



    veri = input("Veri: \t")


    for s in veri.split():

    if s.startswith("i"):

    s = s.replace("i" , "İ" , 1)

    print(veri.title())




  • Eğer girdiğin kelimelerin baş harflerinin tümünü büyük yapmak istiyorsan zaten kullandığın title fonksiyonunu arkada bir işlem yapmadan kullanabilirsin.


    veri = "selam as a i"

    print(veri.title()) -> Selam As A I


    Eğer girdiğin kelimelerin tüm harflerinin büyük olmasını istiyorsan da şu şekilde yapabilirsin


    veri = "selam as a i"

    upper = [x.upper() for x in veri.split()] -> ['SELAM', 'AS', 'A', 'I']



    Fakat her iki seneryoda da i I'ya dönüşecek. Bunun sebebi İ'nin Türkçe karakter olması. Bunu nasıl çözeriz, bunun için kendi fonksiyonumuzu yazarız.


    def tr_upper(word):

    word = re.sub(r"i", "İ", word)

    word = re.sub(r"ı", "I", word)

    word = re.sub(r"ç", "Ç", word)

    word = re.sub(r"ş", "Ş", word)

    word = re.sub(r"ü", "Ü", word)

    word = re.sub(r"ğ", "Ğ", word)


    word = word.upper() # default upper


    return word


    Şimdi az önceki işlemleri birde bu fonksiyonu kullanarak yapalım.


    Girdiğim tüm kelimelerin büyük olmasını istiyorum.


    veri = 'selam as a i'

    print( [tr_upper(x) for x in veri.split()] ) -> ['SELAM', 'AS', 'A', 'İ']


    Girdiğim tüm kelimelerin baş harflerinin büyük olmasını istiyorum.


    veri = 'selam as a i'

    print( [tr_upper(x[0]) + x[1:] for x in veri.split()] ) -> ['Selam', 'As', 'A', 'İ']

  • up

  • Eğer girdiğin kelimelerin baş harflerinin tümünü büyük yapmak istiyorsan zaten kullandığın title fonksiyonunu arkada bir işlem yapmadan kullanabilirsin.


    veri = "selam as a i"

    print(veri.title()) -> Selam As A I


    Eğer girdiğin kelimelerin tüm harflerinin büyük olmasını istiyorsan da şu şekilde yapabilirsin


    veri = "selam as a i"

    upper = [x.upper() for x in veri.split()] -> ['SELAM', 'AS', 'A', 'I']



    Fakat her iki seneryoda da i I'ya dönüşecek. Bunun sebebi İ'nin Türkçe karakter olması. Bunu nasıl çözeriz, bunun için kendi fonksiyonumuzu yazarız.


    def tr_upper(word):

    word = re.sub(r"i", "İ", word)

    word = re.sub(r"ı", "I", word)

    word = re.sub(r"ç", "Ç", word)

    word = re.sub(r"ş", "Ş", word)

    word = re.sub(r"ü", "Ü", word)

    word = re.sub(r"ğ", "Ğ", word)


    word = word.upper() # default upper


    return word


    Şimdi az önceki işlemleri birde bu fonksiyonu kullanarak yapalım.


    Girdiğim tüm kelimelerin büyük olmasını istiyorum.


    veri = 'selam as a i'

    print( [tr_upper(x) for x in veri.split()] ) -> ['SELAM', 'AS', 'A', 'İ']


    Girdiğim tüm kelimelerin baş harflerinin büyük olmasını istiyorum.


    veri = 'selam as a i'

    print( [tr_upper(x[0]) + x[1:] for x in veri.split()] ) -> ['Selam', 'As', 'A', 'İ']




    < Bu mesaj bu kişi tarafından değiştirildi Guest-3B332F97F -- 1 Eylül 2022; 11:34:21 >




  • Döngü içinde s adlı bir değişkene atama yapıyorsun, ama o atama direkt veri'ye yansımaz. veri başka s başka. Burada temel python bilginin çok eksik olduğu ortaya çıkıyor.

    Diğer soruna gelirsek: python'da stringler için upper() ve lower() fonksiyonları var, ancak bunlar locale ayarlarını dikkate alarak çalışmıyor, bu nedenle 'ı' ve 'İ' harflerinde yanlış sonuç üretiyor. Çözüm aslında çok basit. upper() veya lower() çağırmadan önce bir replace() yapacaksın:


    Kod

    Yığını:
    print('çöşğiı'.replace('i','İ').upper()) print('ÇÖŞĞİI'.replace('I','ı').lower())

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • seyfi84 S kullanıcısına yanıt

    evet s ve veri kısmını fark etmemişim yeni yeni öğreniyorum sağ olun

  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.