HATA - Python - If Elif Else - Sıcaklık Birim Dönüştürme

İyi günler herkese. Bir sıcaklık birim dönüştürme programı yaptım. İlk kısımda elimizde K mi C mi F mi olduğunu soruyor. Fakat ben F veya C de tuşlasam beni Kelvin kısmına gönderiyor. Neden acaba ve bu sorunu nasıl düzeltebilirim? Şimdiden teşekkürler.

print("""Sıcaklık birim dönüştürme uygulamasına hoş geldiniz. """)


birim=input("Lütfen hangi sıcaklık birimini gireceğinizi tuşlayınız (Kelvin-K, Celsius-C, Fahrenheit-F): ")


if birim == "K" or "k":
    print("Elinizdeki değer K'dir.")
    
    derece=float(input("Elinizdeki değeri giriniz (Kelvin cinsinden): "))
    
    KC= derece - 273.15
    KF= 1.8 * derece - 459.67
    
    print(derece, "K,", KC, "C'dur.")
    print(derece, "K,", KF, "F'dır.")



elif birim == "C" or "c":
    print("Elinizdeki değer C'dur.")
    
    derece=float(input("Elinizdeki değeri giriniz (Celsius cinsinden): "))
    
    CF= 1.8 * derece + 32
    CK= derece + 273.15

    print(derece, "C,", CF, "F'dır.")
    print(derece, "C,", CK, "K'dir.")
  
  
  
elif birim == "F" or "f":
    print("Elinizdeki değer F'dır.")
    
    derece=float(input("Elinizdeki değeri giriniz (Fahrenheit cinsinden): "))
    
    FC= (derece - 32) / 1.8
    FK= (derece + 459.67) * 1.8
    
    print(derece, "F,", FC, "C'dur.")
    print(derece, "F,", FK, "K'dir.")
  
  
  
else:
    print("Lütfen geçerli bir birim giriniz.")

Merhaba, if else bloklarında mantık hatası var.

>>> a = "D"
>>> bool(a == "K" or "k")
True
>>> bool(a == "K" or a == "k")
False
>>> 

ilk durumda(senin yaptığın şekilde):

a == "K" -> false
"k" -> true
(a == "K") or ("k") -> true

ikinci durumda:

a == "K" -> false
a == "k" -> false
false or false <=> false

hatta bu forumda bu durumla alakalı birkaç gönderi vardı ama bulamadım ben, araştırmak istersen onları da bulabilirsin burada.
İyi günler.

5 Beğeni

Burada benim yazdığım bir tane var:


Umarım faydalı olur.

3 Beğeni
input("Lütfen hangi sıcaklık birimini gireceğinizi tuşlayınız (Kelvin-K, Celsius-C, Fahrenheit-F): ").lower()

olarak değiştirin
koşullardan da or kalıbını ve or’dan sonra gelen belirlediğiniz küçük harfli string ifadeleri de kaldırın.
VEYA
input aynen kalsın alttaki gibi değişiklik uygulayın.
birim == "F" or birim =="f":

Üstte yazan bilir kişilerin dediklerini de boş geçmeyin.
Bu sıcak havada kolay gelsin :slight_smile:

2 Beğeni

Anladım. Ben dediğiniz gibi Türkçe düşündüğüm için sorun olmuş. Dediğiniz gibi yaptım ve istediğim sonucu aldım. Yardım için herkese teşekkürler. :slight_smile: