Python Sıcaklık Birim Dönüştürücü Kodu

Celsius, Fahrenheit, Kelvin arasında geçiş yapan bu program, hem temel matematiksel işlemleri hem de kullanıcıdan veri almayı, hata yönetimini ve döngüleri pratik etmek için birebir.

Sıcaklık dönüşümünde kullanılan formüller:

  • °F = (°C × 9/5) + 32
  • °C = (°F – 32) × 5/9
  • K = °C + 273.15

Sıcaklık dönüşümü için kullanıcıdan sıcaklık değeri ve birimi alıp diğer birimlere dönüştüren kodlar aşağıdaki gibidir.

Python
def main():
    # Geçerli birimler
    gecerli_birimler = {'C', 'F', 'K'}
    
    while True:
        try:
            # Sıcaklık değerini al
            deger_str = input("Sıcaklık değerini girin (örnek: 25.5): ")
            deger = float(deger_str)  # ondalık sayı olabilir
            
            # Birimi al
            birim = input("Birimi girin (C, F, K): ").upper()
            
            # Birim geçerli mi?
            if birim not in gecerli_birimler:
                print("Hatalı giriş! Birim C, F veya K olmalıdır.\n")
                continue
            
            # Mutlak sıfır kontrolü (fiziksel olarak geçersiz sıcaklıklar)
            if birim == 'K' and deger < 0:
                print("Hatalı giriş! Kelvin değeri 0'dan küçük olamaz.\n")
                continue
            if birim == 'C' and deger < -273.15:
                print("Hatalı giriş! Celsius değeri -273.15'ten küçük olamaz.\n")
                continue
            if birim == 'F' and deger < -459.67:
                print("Hatalı giriş! Fahrenheit değeri -459.67'den küçük olamaz.\n")
                continue
                
        except ValueError:
            print("Hatalı giriş! Lütfen sayısal bir değer girin.\n")
            continue  # Tekrar sor
        
        # --- Geçerli giriş yapıldı, dönüşümleri yap ---
        if birim == 'C':
            f = deger * 9/5 + 32
            k = deger + 273.15
            print(f"\n{deger} °C = {f:.2f} °F = {k:.2f} K")
        elif birim == 'F':
            c = (deger - 32) * 5/9
            k = (deger - 32) * 5/9 + 273.15
            print(f"\n{deger} °F = {c:.2f} °C = {k:.2f} K")
        else:  # birim 'K'
            c = deger - 273.15
            f = (deger - 273.15) * 9/5 + 32
            print(f"\n{deger} K = {c:.2f} °C = {f:.2f} °F")
        
        break  # Doğru giriş yapıldı ve sonuç gösterildi, program biter.

if __name__ == "__main__":
    main()

Ancak ondalık sayılarla ilgili bir problemimiz var. Normalde Python’da ondalık sayı girince . (nokta) kullanırız. Ama gerçek hayatta biz ve çoğu Avrupa / Amerika ülkesi ise , (virgül) kullanırız. ABD, İngiltere ve zamanında İngiliz himayesinde bulunan bazı diğer ülkeler İngiliz sisteminde olduğu gibi . (nokta) kullanır.

Aşağıdaki sıcaklık birim dönüştürücü kodu da buna dikkat ederek revize edilmiştir.

Python
def main():
    gecerli_birimler = {'C', 'F', 'K'}
    
    while True:
        try:
            # Kullanıcıdan sıcaklık değerini al
            deger_str = input("Sıcaklık değerini girin: ")
            # Virgülü noktaya çevir (Türkçe ondalık ayracı desteği)
            deger_str = deger_str.replace(',', '.')
            deger = float(deger_str)
            
            # Birim al
            birim = input("Birimi girin (C, F, K): ").upper()
            
            if birim not in gecerli_birimler:
                print("Hatalı giriş! Birim C, F veya K olmalıdır.\n")
                continue
            
            # Mutlak sıfır kontrolü (fiziksel geçerlilik)
            if birim == 'K' and deger < 0:
                print("Hatalı giriş! Kelvin değeri 0'dan küçük olamaz.\n")
                continue
            if birim == 'C' and deger < -273.15:
                print("Hatalı giriş! Celsius değeri -273.15'ten küçük olamaz.\n")
                continue
            if birim == 'F' and deger < -459.67:
                print("Hatalı giriş! Fahrenheit değeri -459.67'den küçük olamaz.\n")
                continue
                
        except ValueError:
            print("Hatalı giriş! Lütfen sayısal bir değer girin (örnek: 25.5 veya 24,5).\n")
            continue
        
        # --- Geçerli giriş, dönüşümleri yap ---
        if birim == 'C':
            f = deger * 9/5 + 32
            k = deger + 273.15
            print(f"\n{deger} °C = {f:.2f} °F = {k:.2f} K")
        elif birim == 'F':
            c = (deger - 32) * 5/9
            k = (deger - 32) * 5/9 + 273.15
            print(f"\n{deger} °F = {c:.2f} °C = {k:.2f} K")
        else:  # birim 'K'
            c = deger - 273.15
            f = (deger - 273.15) * 9/5 + 32
            print(f"\n{deger} K = {c:.2f} °C = {f:.2f} °F")
        
        break  # Başarılı, program sonlanır

if __name__ == "__main__":
    main()

Aslında yaptığımız değişiklik şudur. Kişi virgül ile ondalık sayı giriyorsa python bunu anlamadığı için girilen değerdeki virgül’ü # deger_str = deger_str.replace(‘,’, ‘.’) satırı ile noktaya çevirmemiz gerekti.

Örnek Çıktı 1:

Sıcaklık değerini girin: 36
Birimi girin (C, F, K): c

36.0 °C = 96.80 °F = 309.15 K
Örnek Çıktı 2:

Sıcaklık değerini girin: -35
Birimi girin (C, F, K): f

-35.0 °F = -37.22 °C = 235.93 K
Örnek Çıktı 3:

Sıcaklık değerini girin: 110.5
Birimi girin (C, F, K): k

110.5 K = -162.65 °C = -260.77 °F

Similar Posts

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir