`lower` metodu sonrası karşılaştırma hakkında

kişi = input("Aradığınız kişisin ad ve soyadı:")
kişi = kişi.lower()

if kişi == "Astala Vista":
    print("email: andioral@mns.com")
    print("telefon: 123456789")
    print("adres: makara kikiri sokak, bilmem ne caddesi, no 1")
elif kişi == "Yabadaba Duuu":
    print("email: felanfilan@dsfd.com")
    print("telefon: 56526256586")
    print("adres: sadfesddsfsdfdgdgd")
else:
    print("Aradığınız kişi veritabanında yok.")

çıktısı:
Aradığınız kişisin ad ve soyadı:Astala Vista
Aradığınız kişi veritabanında yok.

burada nerede yanlış yapiyorum bir türlü bulamadım. bilgiler dökülmesi lazımken, Aynı şekilde yazsam bile, yine aynı çıktıyı veriyor.

Eğer girdi olarak Astala Vista giriyorsanız,
lower() yaptıktan sonra bu astala vista olacaktır.
Dolayısıyla kişi == "Astala Vista"False olacaktır.

3 Beğeni

birde kişi = kişi.lower().title() olarak denermisin.

bende denedim kodu hem harfi küçültme hemde baş harfleri büyütlmek gekekiyormuş.

Titleyi henuz gormedim. Egitim aldigim yerler boyunca kodlama calisiyorum. Ilginiz icin tsk ederim

Lower yaptiktan sonra buyuk/kucuk uyumu ortadan kalkmiyor mu? Yani buyukte yazsam, kucukte yazsam, dogru yazildigi takdirde, Kabul etmesi gerekmiyormu? Siteden kopyaliyorum oluyor,Kendim egzersiz yaparak yazayim diyorum, sorun cikiyor :slight_smile:

Yani şunu demek istiyor lower() kullanıyorsanız şartta şu şekilde belirtmek durumundasınız:

if kişi == "astala vista"

Bu durumda input ile alacağınız string “AsTaLA Vista”,“ASTALA VİSTA” vb. olsa dahi:

kişi = kişi.lower()

lower() ile tüm harfleri küçük hale getirilir ve şart sağlanmış olur.

1 Beğeni

Şarta hep kucuk harflermi belirtilmeli. Dogrumu anladim.

bkz: Soru Sorarken Sıkça Düşülen Hatalar #7

Kabul etmekten kasit nedir?

Bu ifadenin kullanilmasi bir yanlis modellemeye isaret ediyor olabilir. Kabul mekanizmalarindan ziyade degerler ve ifadeler ile konusmak lazim: “Buyuk de yazsam, kucuk de yazsan, "HEDE".lower() == "Hede" ifadesinin degeri True olmuyor mu?”

Hangi site? Neyi kopyaliyoruz?

bkz: Soru Sorarken Sıkça Düşülen Hatalar #8

Sartta kullanilacak ifadeler ile ilgili dilde herhangi bir kisitlama yok. Bu konuyla ilgili herhangi bir gelenek veya aliskanlik da yok.

Iki str’yi harf buyuklugunden bagimsiz karsilastirmak isteyenlerin bir fonksiyon yazmalarini tavsiye ederim. Baslangic olarak hede.lower() == hodo.lower(), sonra .casefold() kullanilabilir.

Siteden kopyaliyorum olmuyoru yanlış yazmisim. Duzelttim. Oluyor olacakti, yani kod calisiyor. https://python-istihza.yazbel.com/ calisiyorum. Lower metodu konusunu anlatirken verilen ornegi kopyaliyorum, kullanicidan veri aliyorum, bilgileri cikti olarak veriyor. Lakin ben ayni sekilde farkli degerler atiyorum, else devreye giriyor. If elif kosullari devreye girmiyor. Yukaridaki verdigim kodlamada

Örneğe baktım orada “ahmet öz” yazıyor tamamı küçük harflerden oluştuğu için kişi.lower() ile girilen değeri karşılaştırıyor ve doğru oluyor. Siz ise “Astala Vista” yazarak ilk harfleri büyük bir veri ile tamamı küçük harflerden oluşan değeri karşılaştırıyorsunuz.

Peki siz yazının devamını okudunuz mu? Zaten örnekte bilerek o şekilde yapılıyor. Yazının devamında bizim söylediklerimizi anlatmış zaten:

KAYNAK :

Ama burada bazı problemler var. Birincisi, kullanıcının kaç türlü veri girebileceğini kestiremeyebilirsiniz. İkincisi, kestirebilseniz bile, her kişi için olasılıkları girmeye çalışmak eziyetten başka bir şey değildir…
İşte burada imdadımıza lower() metodu yetişecek. Dikkatlice inceleyin:

kişi = input("Aradığınız kişinin adı ve soyadı: ")
kişi = kişi.lower()

if kişi == "ahmet öz":
    print("email: aoz@hmail.com")
    print("tel  : 02121231212")
    print("şehir: istanbul")

elif kişi == "mehmet söz":
    print("email: msoz@zmail.com")
    print("tel  : 03121231212")
    print("şehir: ankara")

elif kişi == "mahmut göz":
    print("email: mgoz@jmail.com")
    print("tel  : 02161231212")
    print("şehir: istanbul")

else:
    print("Aradığınız kişi veritabanında yok!")

Artık kullanıcı ‘ahmet öz’ de yazsa, ‘Ahmet Öz’ de yazsa, hatta ‘AhMeT öZ’ de yazsa programımız doğru çalışacaktır. Peki bu nasıl oluyor? Elbette lower() metodu sayesinde…

1 Beğeni

Bilgilendirdiginiz icin tesekkur ederim. Pc basina gecince pratikler yaparak daha iyi kavrarim.