Artikel ini bagian dari seri Belajar Python Level Basic di hanifmu.com. Di artikel sebelumnya kita sudah mengenal tipe data dasar di Python. Sekarang kita bahas cara berpindah dari satu tipe ke tipe lain.
Kadang nilai yang kita punya tidak sesuai tipe yang dibutuhkan. Contoh paling umum: input() selalu mengembalikan string, padahal kita butuh angka untuk dihitung. Di sinilah konversi tipe data berperan.
Apa itu Konversi Tipe Data?
Konversi tipe data adalah proses mengubah nilai dari satu tipe ke tipe lain. Ada dua cara ini terjadi: otomatis oleh Python (implisit) atau sengaja oleh kita (eksplisit).
# Implisit — Python yang mengubah
hasil = 10 + 3.5 # int jadi float, hasil 13.5
# Eksplisit — kita yang meminta
angka = int("25") # str jadi int, hasil 25
Mari bahas keduanya.
Konversi Implisit (Type Coercion)
Konversi implisit terjadi saat Python mengubah tipe secara otomatis, biasanya ketika dua tipe berbeda dioperasikan. Python memilih tipe yang “lebih besar” agar tidak ada data yang hilang.
angka_int = 10
angka_float = 3.5
hasil = angka_int + angka_float
print(hasil) # 13.5
print(type(hasil)) # <class 'float'>
int naik tingkat jadi float supaya bisa digabung. Ini disebut type coercion.
Hal yang sama terjadi pada boolean, karena bool sebenarnya turunan int:
print(True + 5) # 6, True dianggap 1
print(False + 5) # 5, False dianggap 0
Yang tidak bisa dilakukan otomatis adalah menggabung angka dengan string:
# Salah
print(10 + "5") # TypeError
Python tidak mau menebak apakah "5" harus jadi angka atau 10 harus jadi teks. Di sini kamu perlu konversi eksplisit.
Konversi Eksplisit
Konversi eksplisit dilakukan dengan memanggil function sesuai tipe tujuan. Python menyediakan empat yang utama:
| Function | Mengubah ke | Contoh |
|---|---|---|
int() | Bilangan bulat | int("25") → 25 |
float() | Bilangan desimal | float("3.5") → 3.5 |
str() | Teks | str(25) → "25" |
bool() | Boolean | bool(0) → False |
Konversi ke int()
print(int("25")) # 25
print(int(3.9)) # 3, koma dipotong (bukan dibulatkan)
print(int(True)) # 1
Perhatikan int(3.9) menghasilkan 3, bukan 4. int() memotong bagian desimal, bukan membulatkan. Kalau butuh pembulatan, gunakan round():
print(round(3.9)) # 4
String yang berisi angka desimal tidak bisa langsung dikonversi ke int:
# Salah
int("3.5") # ValueError
Konversi dulu ke float, baru ke int:
int(float("3.5")) # 3
Konversi ke float()
print(float("3.5")) # 3.5
print(float(10)) # 10.0
print(float("10")) # 10.0
print(float(True)) # 1.0
Konversi ke str()
Konversi ke string hampir selalu berhasil, karena semua nilai bisa dijadikan teks:
print(str(25)) # "25"
print(str(3.5)) # "3.5"
print(str(True)) # "True"
print(str(False)) # "False"
Ini berguna saat menggabung angka ke dalam teks:
umur = 25
# Salah: "Umur: " + umur
print("Umur: " + str(umur)) # Umur: 25
Cara yang lebih modern adalah memakai f-string, yang otomatis mengubah tipe:
umur = 25
print(f"Umur: {umur}") # Umur: 25
Konversi ke bool()
Aturan bool() berbeda dari yang lain. Nilai berikut dianggap False:
0dan0.0""(string kosong)None- List, tuple, atau dictionary kosong
Semua nilai lain dianggap True.
print(bool(1)) # True
print(bool(0)) # False
print(bool(-5)) # True, bukan nol berarti True
print(bool("")) # False
print(bool("0")) # True, string berisi teks "0"
print(bool("halo")) # True
Perhatikan bool("0") menghasilkan True. Karena "0" adalah string berisi satu karakter, bukan angka nol.
Kapan Konversi Dibutuhkan?
1. Menerima Input Pengguna
input() selalu mengembalikan string. Untuk perhitungan, konversi dulu:
umur = input("Umur kamu: ") # hasilnya string
umur = int(umur) # ubah ke int
print(umur + 1)
Bisa juga digabung dalam satu baris:
umur = int(input("Umur kamu: "))
2. Menggabung Angka ke Teks
jumlah = 5
print("Total: " + str(jumlah) + " item")
3. Membaca Data dari File atau API
Data dari file atau internet sering berbentuk string, meski isinya angka. Konversi diperlukan sebelum diolah.
Menangani Konversi yang Gagal
Konversi bisa gagal kalau isinya tidak sesuai. Contohnya int("halo") akan menghasilkan ValueError.
int("halo")
# ValueError: invalid literal for int() with base 10: 'halo'
Untuk saat ini, pastikan nilai yang dikonversi memang berbentuk angka. Nanti saat membahas error handling, kita akan belajar menangani kegagalan ini dengan try dan except.
Ringkasan
- Konversi implisit dilakukan Python otomatis, misalnya
intjadifloat - Konversi eksplisit dilakukan dengan
int(),float(),str(), danbool() int()memotong desimal, bukan membulatkanstr()hampir selalu berhasil karena semua nilai bisa jadi teksbool()menganggap0,"", dan nilai kosong sebagaiFalse- Konversi sering dibutuhkan saat menerima input, menggabung teks, atau membaca data
Langkah Selanjutnya
Kamu sudah bisa mengubah tipe data sesuai kebutuhan. Salah satu pemakaian paling penting adalah saat menerima masukan dari pengguna.
Artikel selanjutnya membahas Input dan Output di Python, cara memakai print() dan input() agar program bisa berkomunikasi dengan pengguna.
