Halo sobat ayamkoding, pada kesempatan kali ini kita akan menulis program python untuk konversi suhu menggunakan command line interface.
Apakah kamu sudah pernah mencoba membuat program konversi suhu dengan bahasa pemrograman lain?
Sebelum itu, kita telah membuat program sederhana kalkulator yang begitu menarik untuk dicoba.
Suhu adalah parameter yang sering kita gunakan dalam kehidupan sehari-hari.
Ada banyak satuan untuk mengukur suhu mulai dari yang paling kita kenal yaitu Celcius.
Hingga satuan lainnya seperti Fahrenheit maupun Reamur.
Di dunia pemrograman, membuat program konversi suhu bisa menjadi latihan awal yang tepat untuk memahami logika dasar dan interaksi input-output.
Mari kita coba mulai membuat program tersebut dengan berbagai macam cara.
Program pertama, kita akan membuat hal yang paling dasar dengan mengubah suhu dari celcius ke fahrenheit terlebih dahulu.
Untuk mengubah dari celcius ke fahrenheit kita bisa menggunakan rumus:
suhu_akhir = (suhu_awal x 9/5) + 32
# ----------------------------------------
# Program Python Konversi Suhu Sederhana
# ----------------------------------------
print("Program Python Konversi Suhu Sederhana")
print("~konversi suhu dari celcius ke fahrenheit")
print("--------------------------------------\n")
# perintah masukkan suhu awal (disimpan ke variabel suhu_celcius)
suhu_celcius = float(input("Masukkan suhu dalam celcius: "))
# perhitungan konversi suhu ke fahrenheit menggunakan rumus
suhu_fahrenheit = (suhu_celcius * 9/5 ) + 32
# menampilkan hasil perhitungan suhu ke layar dari °C ke °F
print("------------------------------")
print(f"Hasil dari konversi suhu {suhu_celcius:.0f}°C adalah {suhu_fahrenheit}°F")
Contoh Output:
(Eksperimen 1: suhu 0°C)
Program Python Konversi Suhu Sederhana
~konversi suhu dari celcius ke fahrenheit
--------------------------------------
Masukkan suhu dalam celcius: 0
------------------------------
Hasil dari konversi suhu 0°C adalah 32.0°F
(Eksperimen 2: suhu 50°C)
Program Python Konversi Suhu Sederhana
~konversi suhu dari celcius ke fahrenheit
--------------------------------------
Masukkan suhu dalam celcius: 50
------------------------------
Hasil dari konversi suhu 50°C adalah 122.0°F
(Eksperimen 3: suhu 100°C)
Program Python Konversi Suhu Sederhana
~konversi suhu dari celcius ke fahrenheit
--------------------------------------
Masukkan suhu dalam celcius: 100
------------------------------
Hasil dari konversi suhu 100°C adalah 212.0°F
Penjelasan:
1. Perintah untuk memasukkan nilai suhu dalam satuan derajat celcius. Disimpan ke dalam variabel dengan nama suhu_celcius.
suhu_celcius = float(input("Masukkan suhu dalam celcius: "))
2. Hasil dari input suhu tersebut akan diubah ke dalam satuan fahrenheit menggunakan rumus. Hasil dari perhitungan tersebut akan disimpan ke dalam variabel suhu_fahrenheit
suhu_fahrenheit = (suhu_celcius * 9/5 ) + 32
3. Perintah untuk menampilkan hasil dari perhitungan konversi suhu dari derajat celcius ke derajat fahrenheit.
print(f"Hasil dari konversi suhu {suhu_celcius:.0f}°C adalah {suhu_fahrenheit}°F")
Barangkali kita akan mengembangkan program konversi suhu tersebut dengan tambahan satuan Kelvin.
Karena sebelumnya kita hanya membuat program konversi dari celcius ke fahrenheit saja namun belum bisa sebaliknya.
Berikut akan kita kembangkan menggunakan custom function dan input dari pengguna.
# ----------------------------
# Program Python Konversi Suhu
# ~ dalam satuan C, F, K
# ----------------------------
print("Program Python Untuk Konversi Suhu")
print("----------------------------------")
print("Konversi: Celcius, Fahrenheit, dan Kelvin\n")
# function untuk konversi suhu
# parameter ke-1 suhu awal, parameter ke-2 input satuan, parameter ke-3 output satuan
# perhitungan dilakukan sesuai dengan rumus masing-masing satuan
def konversi_suhu(suhu, input, output):
if input == "C":
if output == "F":
return (suhu * 9/5) + 32
elif output == "K":
return suhu + 273.15
elif input == "F":
if output == "C":
return (suhu - 32) * 5/9
elif output == "K":
return (suhu - 32) * 5/9 + 273.15
elif input == "K":
if output == "C":
return suhu - 273.15
elif output == "F":
return (suhu - 273.15) * 9/5 + 32
return None
# function untuk format dari penulisan suhu
# jika Kelvin maka tanpa tanda derajat
# jika Celcius dan Fahrenheit maka menggunakan tanda derajat
def format_suhu(nilai, satuan)->str:
if satuan == "K":
return f"{nilai:.2f}{satuan}"
else:
return f"{nilai:.2f}°{satuan}"
# function untuk formatting satuan
# misalnya, jika input C maka akan menjadi Celcius
def format_satuan(satuan)->str:
if satuan == "C":
return "Celcius"
elif satuan == "F":
return "Fahrenheit"
elif satuan == "K":
return "Kelvin"
return "Celcius"
# input satuan asal (input_satuan) dan satuan tujuan (output_satuan)
input_satuan = input("Masukkan input satuan (C/F/K) : ").upper()
output_satuan = input("Masukkan output satuan (C/F/K) : ").upper()
# perintah untuk memasukkan nilai suhu
# nilai tersebut akan disimpan ke variabel dengan nama `nilai_suhu`
nilai_suhu = float(input(f"Masukkan suhu dalam {format_satuan(input_satuan)}: "))
# pemanggilan function konversi_suhu
# function tersebut berisi 3 argument mulai dari nilai suhu, satuan awal, dan satuan akhir
# hasilnya tersebut disimpan ke variabel hasil
hasil = konversi_suhu(nilai_suhu, input_satuan, output_satuan)
# jika hasil tidak None maka akan menampilkan hasilnya pada layar
if hasil is not None:
print("--------------------------------")
print(f"Hasil konversi suhu dari {format_suhu(nilai_suhu, input_satuan)} setara dengan {format_suhu(hasil, output_satuan)}")
else:
print("--------------------------------")
print("Coba lagi! Konversi tidak valid")
Contoh Output:
(Eksperimen 1: satuan awal C, satuan akhir C) – harusnya tidak valid
Program Python Untuk Konversi Suhu
----------------------------------
Konversi: Celcius, Fahrenheit, dan Kelvin
Masukkan input satuan (C/F/K) : C
Masukkan output satuan (C/F/K) : C
Masukkan suhu dalam Celcius: 100
--------------------------------
Coba lagi! Konversi tidak valid
(Eksperimen 2: Celcius -> Fahrenheit)
Program Python Untuk Konversi Suhu
----------------------------------
Konversi: Celcius, Fahrenheit, dan Kelvin
Masukkan input satuan (C/F/K) : C
Masukkan output satuan (C/F/K) : F
Masukkan suhu dalam Celcius: 100
--------------------------------
Hasil konversi suhu dari 100.00°C setara dengan 212.00°F
(Eksperimen 3: Celcius -> Kelvin)
Program Python Untuk Konversi Suhu
----------------------------------
Konversi: Celcius, Fahrenheit, dan Kelvin
Masukkan input satuan (C/F/K) : C
Masukkan output satuan (C/F/K) : K
Masukkan suhu dalam Celcius: 100
--------------------------------
Hasil konversi suhu dari 100.00°C setara dengan 373.15K
(Eksperimen 4: Fahrenheit -> Celcius)
Program Python Untuk Konversi Suhu
----------------------------------
Konversi: Celcius, Fahrenheit, dan Kelvin
Masukkan input satuan (C/F/K) : F
Masukkan output satuan (C/F/K) : C
Masukkan suhu dalam Fahrenheit: 50
--------------------------------
Hasil konversi suhu dari 50.00°F setara dengan 10.00°C
Penjelasan:
1. Membuat function dengan nama konversi_suhu. Di sini ada berbagai macam kondisi menggunakan if jika input C, F, maupun K.
Ada 3 parameter yang akan digunakan yakni suhu, input, dan output.
suhu = suhu awal yang akan dihitung
input = satuan awal, misalnya C, F, K
output = satuan akhir
Masing – masing kondisi if tersebut akan melakukan perhitungan konversi sesuai dengan rumus yang ada.
...
def konversi_suhu(suhu, input, output):
if input == "C":
if output == "F":
return (suhu * 9/5) + 32
elif output == "K":
return suhu + 273.15
elif input == "F":
if output == "C":
return (suhu - 32) * 5/9
elif output == "K":
return (suhu - 32) * 5/9 + 273.15
elif input == "K":
if output == "C":
return suhu - 273.15
elif output == "F":
return (suhu - 273.15) * 9/5 + 32
return None
...
2. Membuat function baru dengan nama format_suhu. Berisi parameter nilai dari suhu dan satuan. Jika nilai satuan adalah K/Kelvin maka format tidak akan menggunakan derajat. Jika selain Kelvin, maka format akan menggunakan derajat.
...
def format_suhu(nilai, satuan)->str:
if satuan == "K":
return f"{nilai:.2f}{satuan}"
else:
return f"{nilai:.2f}°{satuan}"
...
3. Membuat format satuan sehingga akan return nilai satuan yang dalam bentuk kapital akan diubah ke dalam format string. Misalnya dari C akan diubah ke dalam bentuk Celcius.
...
def format_satuan(satuan)->str:
if satuan == "C":
return "Celcius"
elif satuan == "F":
return "Fahrenheit"
elif satuan == "K":
return "Kelvin"
return "Celcius"
...
4. Perintah untuk melakukan input satuan awal dan satuan akhir hasil dari konversi.
input_satuan = input("Masukkan input satuan (C/F/K) : ").upper()
output_satuan = input("Masukkan output satuan (C/F/K) : ").upper()
5. Perintah untuk memasukkan nilai suhu dalam format satuan awal yang akan diinput.
nilai_suhu = float(input(f"Masukkan suhu dalam {format_satuan(input_satuan)}: "))
6. Memanggil function konversi_suhu untuk melakukan konversi dari nilai suhu. Nilai tersebut akan disimpan ke dalam variabel hasil. Di sini kita akan memberikan argument sebanyak tiga yakni nilai_suhu, input_satuan, dan output_satuan.
hasil = konversi_suhu(nilai_suhu, input_satuan, output_satuan)
7. Selanjutnya, jika hasil adalah bukan None maka akan ditampilkan ke dalam layar. Jika nilainya None berarti konversi tersebut tidak valid.
if hasil is not None:
print("--------------------------------")
print(f"Hasil konversi suhu dari {format_suhu(nilai_suhu, input_satuan)} setara dengan {format_suhu(hasil, output_satuan)}")
else:
print("--------------------------------")
print("Coba lagi! Konversi tidak valid")
Barangkali kamu ingin mengembangkan kembali program tersebut dengan menggunakan pendekatan pemrograman berorientasi objek?
Dengan menggunakan pendekatan OOP, pastinya kode kamu akan menjadi lebih terstruktur dan mudah untuk di-maintenance.
Mari kita coba perhitungan konversi suhu dengan menggunakan pendekatan pemrograman berorientasi objek.
# ------------------------------------
# Program Python Untuk Konversi Suhu
# --- Menggunakan Pendekatan OOP ---
# ------------------------------------
class KonversiSuhu:
# method __init__ untuk inisialisasi suhu dan satuan awal
def __init__(self, suhu, satuan_awal):
self.suhu = suhu
self.satuan_awal = satuan_awal.upper()
# membuat method untuk mengubah semua suhu diubah ke satuan celcius terlebih dahulu
# jika satuan awal bukan C/F/K maka akan mendapatkan value error
def ubah_ke_celcius(self):
if self.satuan_awal == "C":
return self.suhu
elif self.satuan_awal == "F":
return (self.suhu - 32) * 5/9
elif self.satuan_awal == "K":
return self.suhu - 273.15
else:
raise ValueError("Satuan awal tidak dikenal")
# method untuk konversi ke satuan akhir
# dari suhu satuan celcius akan diubah di sini
# jika satuan akhir bukan C/F/K maka akan mendapatkan value error
def konversi(self, satuan_akhir):
satuan_akhir = satuan_akhir.upper()
suhu_dalam_celcius = self.ubah_ke_celcius()
if satuan_akhir == "C":
return suhu_dalam_celcius
elif satuan_akhir == "F":
return (suhu_dalam_celcius * 9/5) + 32
elif satuan_akhir == "K":
return suhu_dalam_celcius + 273.15
else:
raise ValueError("Satuan akhir tidak dikenal")
# method untuk melakukan pengecekan apakah satuan awal sama dengan satuan akhir
# jika satuan akhir tidak sama dengan satuan awal maka akan True
def is_satuan_beda(self, satuan_awal, satuan_akhir):
return satuan_awal != satuan_akhir
# method untuk format suhu berdasarkan satuan
# jika suhu Kelvin maka tidak akan menggunakan derajat
def format_suhu(self, suhu, satuan):
satuan = satuan.upper()
if satuan == "K":
return f"{suhu}{satuan}"
else:
return f"{suhu}°{satuan}"
# membuat function main di luar dari class
def main():
print("------ Program Konversi Suhu Python -----")
print("Konversi: Celcius, Fahrenheit, dan Kelvin")
print("-----------------------------------------")
# menggunakan try...except... untuk handling error ketika program dijalankan
try:
# perintah input untuk satuan awal, satuan akhir, dan suhu yang akan dikonversi
satuan_awal = input("Masukkan satuan awal (C/F/K) : ").strip()
satuan_akhir = input("Masukkan satuan akhir (C/F/K) : ").strip()
suhu = float(input("Masukkan suhu awal: "))
# membuat objek baru dengan nama konverter dari class KonversiSuhu
# menggunakan suhu dan satuan_awal sebagai argument serta disimpan ke variabel konverter
konverter = KonversiSuhu(suhu, satuan_awal)
# melakukan pengecekan jika satuan beda maka akan dikonversi
# jika satuan_awal dan satuan_akhir sama maka tidak akan dihitung
print("-----------------------------------")
if konverter.is_satuan_beda(satuan_awal, satuan_akhir):
# pemanggilan method `konversi` dengan argument satuan_akhir untuk konversi suhu ke satuan yang dipilih
suhu_akhir = konverter.konversi(satuan_akhir)
# menampilkan hasil perhitungan konversi dengan format yang sudah dibuat
print(f"Hasil konversi suhu dari {konverter.format_suhu(suhu, satuan_awal)} adalah {konverter.format_suhu(suhu_akhir, satuan_akhir)}")
else:
print("Konversi tidak bisa karena satuan sama")
except ValueError as err:
print(f"Error: {err}")
# pemanggilan function main() di program
main()
Contoh Output:
(Eksperimen 1: Celcius -> Fahrenheit)
------ Program Konversi Suhu Python -----
Konversi: Celcius, Fahrenheit, dan Kelvin
-----------------------------------------
Masukkan satuan awal (C/F/K) : C
Masukkan satuan akhir (C/F/K) : F
Masukkan suhu awal: 30
-----------------------------------
Hasil konversi suhu dari 30.0°C adalah 86.0°F
(Eksperimen 2: Celcius -> Kelvin )
------ Program Konversi Suhu Python -----
Konversi: Celcius, Fahrenheit, dan Kelvin
-----------------------------------------
Masukkan satuan awal (C/F/K) : C
Masukkan satuan akhir (C/F/K) : K
Masukkan suhu awal: 50
-----------------------------------
Hasil konversi suhu dari 50.0°C adalah 323.15K
(Eksperimen 3: satuan sama)
------ Program Konversi Suhu Python -----
Konversi: Celcius, Fahrenheit, dan Kelvin
-----------------------------------------
Masukkan satuan awal (C/F/K) : K
Masukkan satuan akhir (C/F/K) : K
Masukkan suhu awal: 3
-----------------------------------
Konversi tidak bisa karena satuan sama
Penjelasan:
1. Membuat class baru dengan nama KonversiSuhu yang digunakan sebagai blueprint.
...
class KonversiSuhu:
...
2. Membuat method __init__ yang digunakan untuk inisialisasi nilai atribut dari objek pada class. Di sini
...
def __init__(self, suhu, satuan_awal):
self.suhu = suhu
self.satuan_awal = satuan_awal.upper()
...
3. Membuat method ubah_ke_celcius untuk melakukan konversi suhu ke celcius terlebih dahulu. Masing-masing satuan awal akan dilakukan pengecekan untuk menggunakan rumus yang akan dipakai untuk konversi. Hal ini dilakukan agar mempermudah perhitungan. Jika input satuan_awal bukan C/F/K maka akan error dan satuan tidak dikenal.
...
def ubah_ke_celcius(self):
if self.satuan_awal == "C":
return self.suhu
elif self.satuan_awal == "F":
return (self.suhu - 32) * 5/9
elif self.satuan_awal == "K":
return self.suhu - 273.15
else:
raise ValueError("Satuan awal tidak dikenal")
...
4. Membuat method konversi dari celcius ke satuan akhir. Di sini kita akan menggunakan parameter satuan_akhir untuk mendefinisikan satuan yang dituju. Di dalam method ini juga terdapat pemanggilan static method ubah_ke_celcius() untuk melakukan konversi ke celcius terlebih dahulu.
Jika satuan akhir dikenali maka akan dilakukan konversi dari celcius ke satuan yang dituju.
...
def konversi(self, satuan_akhir):
satuan_akhir = satuan_akhir.upper()
suhu_dalam_celcius = self.ubah_ke_celcius()
if satuan_akhir == "C":
return suhu_dalam_celcius
elif satuan_akhir == "F":
return (suhu_dalam_celcius * 9/5) + 32
elif satuan_akhir == "K":
return suhu_dalam_celcius + 273.15
else:
raise ValueError("Satuan akhir tidak dikenal")
...
5. Method ini digunakan untuk melakukan pengecekan apakah satuan awal dan satuan akhir sama atau tidak. Jika tidak sama maka akan return True.
...
def is_satuan_beda(self, satuan_awal, satuan_akhir):
return satuan_awal != satuan_akhir
...
6. Di sini kita juga membuat format dari satuan. Suhu dalam satuan Kelvin tidak menggunakan derajat, sedangkan satuan lainnya menggunakan derajat.
...
def format_suhu(self, suhu, satuan):
satuan = satuan.upper()
if satuan == "K":
return f"{suhu}{satuan}"
else:
return f"{suhu}°{satuan}"
...
7. Membuat function main() dan function tersebut juga dipanggil di program ini.
...
def main():
...
...
main()
...
8. Di dalam function main terdapat try…except… untuk menghadle situasi jika ada error ketika program tersebut dijalankan. Pada kode di bawah, pengguna akan diminta untuk memasukkan satuan awal dan satuan akhir, serta suhu awal yang ada.
...
def main():
try:
satuan_awal = input("Masukkan satuan awal (C/F/K) : ").strip()
satuan_akhir = input("Masukkan satuan akhir (C/F/K) : ").strip()
suhu = float(input("Masukkan suhu awal: "))
...
except ValueError as err:
print(f"Error: {err}")
...
9. Pada function main() juga dilakukan instance objek dengan nama konverter dari class KonversiSuhu. Ketika membuat objek ini kita menggunakan suhu dan satuan_awal sebagai argument.
...
def main():
...
konverter = KonversiSuhu(suhu, satuan_awal)
...
10. Logika untuk melakukan pengecekan satuan. Jika satuan sama maka akan muncul pesan tidak bisa dilakukan konversi. Sedangkan ketika satuan awal dan satuan akhir adalah beda maka bisa menjalankan konversi. Nilai tersebut disimpan ke dalam variabel suhu_akhir.
Hasil dari suhu akhir tersebut akan ditampilkan ke layar dengan menggunakan format_suhu agar lebih bagus dari segi format teks.
...
def main():
...
...
if konverter.is_satuan_beda(satuan_awal, satuan_akhir):
suhu_akhir = konverter.konversi(satuan_akhir)
print(f"Hasil konversi suhu dari {konverter.format_suhu(suhu, satuan_awal)} adalah {konverter.format_suhu(suhu_akhir, satuan_akhir)}")
else:
print("Konversi tidak bisa karena satuan sama")
...
Okay, demikian artikel mengenai program konversi suhu sederhana menggunakan bahasa pemrograman python menggunakan aneka macam cara.
Pastinya, kamu bisa mencoba berbagai opsi sesuai dengan kebutuhan kamu ketika menggunakan python.
Semoga tutorial python untuk konversi suhu ini bisa bermanfaat.
Terima kasih dan happy coding! 🚀