Python'da string dizisinin karakter özelliği sıralı bir şekilde nasıl korunur?

Otirix

Centipat
Katılım
17 Ekim 2019
Mesajlar
87
Makaleler
1
Çözümler
1
Arkadaşlar soru tam olarak şu: "Kullanıcıdan bir karakter dizisi (string) alan ve büyük harf, küçük harf, boşluk konumları korunacak şekilde karakter dizisinin tersini döndüren programı yazınız"
Öncelikle ödevim falan değil arkadaşlar, Python'u kendim öğreniyorum ve bu soruda takıldım.
 
Son düzenleyen: Moderatör:
String'i karakter listesine dönüştürüp ilgili indexte Büyük formda olup olmadıklarını sorgulayıp bu indexleri başka bir listeye kaydedin.

Ardından stringi' reverse'leyip tuttuğunuz indexlerdeki karakterleri büyütün.
 
String'i karakter listesine dönüştürüp ilgili indexte Büyük formda olup olmadıklarını sorgulayıp bu indexleri başka bir listeye kaydedin.

Ardından stringi' reverse'leyip tuttuğunuz indexlerdeki karakterleri büyütün.
Hocam tamda takıldığım nokta, büyük küçük olduğunu nasıl sorgulatabilirim örnek verirmisiniz zahmet olmazsa.
 
string.isupper() fonksiyonu eğer ilgili karakter ya da string büyükse doğru döndürür. Küçükse ya da string içinde küçük karakter varsa yanlış döndürecektir.

Örnek:

Yarım yamalak python bilgimle bu kadar yapabildim. Java ya da C# çok daha kolay geliyor şahsen index operasyonlarında.

Python:
def split(word):
    return [char for char in word]


def string_reverser(x):

    uppercase_indices = []
    temp = split(x)
    counter = 0

    while counter < len(temp):
        if temp[counter].isupper():
            uppercase_indices.append(counter)
        counter += 1

    x = x.lower()
    x = x[::-1]

    if len(uppercase_indices) == 0:
        return x

    counter = 0
    temp2 = split(x)
    while counter < len(uppercase_indices):
        i = int(uppercase_indices[counter])
        temp2[i] = temp2[i].upper()
        counter += 1
    return temp2


den = " AbC Zmy"
print(string_reverser(den))
 
Son düzenleme:
Soruyu yanlış anlamışsınız hocam; "girdi : AbC Zmy çıktı : YmZ Cba" gibi olmalı.
reversedString = "Hello World"[::-1]
Ters çevirmek için bu kullanılabilir. Case flip işlemi için orijinal string saklanıp tek döngü içerisinde gerekli düzeltmeler uygulanır.
Python:
def revStr(myString):
  org = myString
  reversedString = myString[::-1]
  caseFlip = []
  for i, _ in enumerate(org):
    if(_.islower()):
      caseFlip.append(reversedString[i].lower())
    if(_.isupper()):
      caseFlip.append(reversedString[i].upper())
  return "".join(caseFlip)

Bu kadar basit bir kod aslında.
 
Son düzenleme:
Teşekkürederim arkadaşlar, bende farklı bir yolla çözdüm.
Python:
a=input("lanet olası cümleyi giriniz: ")

f=lambda s:"".join((z*2).title()[c.isupper()-1]for c,z in zip(s,s[::-1]))

print ("lanet olası cümleyi alınız: " + f(a))
 

Yeni konular

Geri
Yukarı