#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()) |
Bir gelebilir misiniz acemiyim
-
-
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:
print('çöşğiı'.replace('i','İ').upper()) print('ÇÖŞĞİI'.replace('I','ı').lower())Kod
Yığını:
< Bu ileti mobil sürüm kullanılarak atıldı > -
evet s ve veri kısmını fark etmemişim yeni yeni öğreniyorum sağ olun
En Beğenilen Yanıtlar
Tüm Yanıtları Genişlet
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 IP'si ile atılan mesajları ara Bu kullanıcının son IP'si ile atılan mesajları ara Bu mesaj IP'si ile kullanıcı ara Bu kullanıcının son IP'si ile kullanıcı ara
KAPAT X