- Bab 4 dari 11
- 25 menit
- 1 latihan kode
- 4 soal kuis
Input, Output, dan f-string
Di bab ini (8 bagian)
Tujuan bab ini
- Membaca masukan pengguna dengan
input()dan memahami bahwa hasilnya selalustr. - Mengubah masukan menjadi angka dengan
int()danfloat(). - Menyusun teks rapi dengan f-string.
- Memakai format spesifier seperti
:,.2f,:.1%, dan perataan<>^.
Program yang bisa diajak ngobrol
Sejauh ini programmu hanya bicara satu arah: print() menampilkan sesuatu ke layar. Agar program terasa hidup, ia juga perlu mendengar. Di Python, telinganya adalah fungsi input().
Saat dijalankan:
Alurnya begini:
input()menampilkan teks di dalam kurung sebagai pertanyaan.- Program berhenti dan menunggu sampai pengguna mengetik lalu menekan Enter.
- Semua yang diketik dikembalikan sebagai nilai, lalu disimpan ke
nama.
Tips kecil: beri spasi di akhir teks pertanyaan ("Siapa namamu? ") supaya jawaban pengguna tidak menempel ke tanda tanya.
Aturan emas: input() selalu menghasilkan str
Ini aturan yang paling sering dilupakan. Apa pun yang diketik pengguna, termasuk angka, input() mengembalikannya sebagai teks.
Output:
Bagi Python, "20" hanyalah dua karakter, angka 2 dan 0, sama seperti "ab". Teks tidak bisa ditambah angka. Analoginya: kamu menerima nomor rumah tertulis di kertas. Kertas itu tidak bisa kamu jumlahkan, kamu harus membaca angkanya dulu.
Solusinya, ubah dengan int() untuk bilangan bulat atau float() untuk desimal:
Output:
Perhatikan pola int(input(...)). Python menjalankan bagian dalam dulu (input menghasilkan "20"), lalu bagian luar (int mengubahnya menjadi 20).
Kalau pengguna mengetik dua puluh atau 20.5 pada int(...), program akan error ValueError. Cara menangani error seperti ini dengan try dan except dibahas di bab penanganan error.
f-string: cara modern menyusun teks
Menggabungkan teks dengan + cepat jadi berantakan, apalagi kalau ada angka yang harus diubah dulu dengan str():
f-string jauh lebih rapi. Tambahkan huruf f sebelum tanda kutip, lalu tulis variabel atau ekspresi di dalam kurung kurawal {}:
Output:
Di dalam {} boleh ada ekspresi apa saja: hitungan, pemanggilan fungsi, atau method. Konversi ke teks dilakukan otomatis, jadi tidak perlu str(). f-string tersedia sejak Python 3.6.
Trik debugging: tulis tanda = setelah nama variabel untuk menampilkan nama sekaligus nilainya.
Output:
Format spesifier: angka yang enak dibaca
Setelah ekspresi di dalam {}, kamu bisa menambah titik dua : lalu aturan format.
Output:
Baca :,.2f dari kiri ke kanan:
,memberi pemisah ribuan..2berarti dua angka di belakang titik desimal (dibulatkan, jadi .756 menjadi .76).fberarti tampilkan sebagai bilangan desimal tetap (fixed-point).
| Spesifier | Contoh | Hasil |
|---|---|---|
:.2f | f"{3.14159:.2f}" | 3.14 |
:, | f"{1500000:,}" | 1,500,000 |
:.1% | f"{0.875:.1%}" | 87.5% |
:05d | f"{42:05d}" | 00042 |
:<8 | f"[{'Ani':<8}]" | [Ani ] |
:>8 | f"[{'Ani':>8}]" | [ Ani] |
:^8 | f"[{'Ani':^8}]" | [ Ani ] |
Format pemisah ribuan bawaan Python mengikuti gaya Inggris (koma untuk ribuan, titik untuk desimal). Kalau ingin gaya Indonesia seperti Rp12.500,76, tukar tandanya dengan replace:
Output:
Perataan untuk tabel sederhana
Perataan sangat membantu saat menampilkan data dalam kolom. Angka setelah tanda <, >, atau ^ adalah lebar kolom.
Output:
Teks rata kiri, angka rata kanan, persis seperti tabel di spreadsheet. Pola ini akan kamu pakai lagi di proyek mini kalkulator nilai.
Menggabungkan semuanya: kasir mini
Sekarang gabungkan input, konversi, hitungan, dan f-string menjadi satu program kecil. Program ini menghitung total belanja dengan diskon.
Output:
Beberapa hal yang perlu diperhatikan:
.strip()membuang spasi berlebih di awal dan akhir jawaban, berguna kalau pengguna tidak sengaja menekan spasi.- Harga memakai
float()karena bisa saja ada sen, sedangkan jumlah memakaiint()karena barang dihitung utuh. - Semua hitungan memakai angka asli. Format baru diterapkan di bagian paling akhir, saat menampilkan. Pisahkan menghitung dan menampilkan supaya hasilnya tidak ikut terbulatkan di tengah jalan.
Kesalahan umum
- Lupa mengubah hasil
input().input("Umur? ") + 1error karena hasilnya teks. - Lupa huruf
f.print("Halo {nama}")menampilkan{nama}apa adanya. - Memakai
int()untuk angka desimal.int("2.5")error; pakaifloat(). - Kutip bertabrakan. Di dalam f-string berkutip dua, pakai kutip satu untuk teks di dalam
{}, misalnyaf"{'Ani':<8}". - Mengira
:.2fmengubah nilai variabel. Format hanya mengubah tampilan; nilaihargatetap 12500.756.
Rangkuman
input()menampilkan pertanyaan, menunggu Enter, dan selalu mengembalikanstr.- Ubah ke angka dengan
int()ataufloat(), misalnyaint(input("Umur? ")). - f-string diawali
fdan menyisipkan ekspresi di dalam{}tanpa perlustr(). - Format spesifier setelah
:mengatur tampilan:,.2funtuk ribuan dan dua desimal,.1%untuk persen,<>^untuk perataan.
Slide 14 sampai 14 dari deck Pemrograman Python: Dari Nol sampai Proyek Mini. Penjelasan lengkapnya ada di mode Baca.

Selesaikan bab ini
- 1. Baca materi
- 2. Latihan kode (1)
- 3. Kuis (4 soal)
Latihan kode: Struk kasir dengan f-string
Di latihan ini input() tidak tersedia, jadi nilai yang biasanya datang dari input() diberikan sebagai parameter berupa teks. Lengkapi:
hitung_total(teks_jumlah, harga)mengubahteks_jumlah(misalnya"3") menjadiintlalu mengembalikan jumlah kali harga. Contoh:hitung_total("3", 18500)menghasilkan55500.format_rupiah(nilai)mengembalikan teksRpdiikuti nilai dengan pemisah ribuan dan dua desimal. Contoh:format_rupiah(12500.756)menghasilkan"Rp12,500.76".sapa(nama, umur)mengembalikan"Halo <nama>, tahun depan kamu <umur + 1> tahun". Contoh:sapa("Sari", 20)menghasilkan"Halo Sari, tahun depan kamu 21 tahun".
Cek pemahaman
1Apa tipe data hasil input() bila pengguna mengetik 20?
2Apa yang ditampilkan kode berikut?
harga = 12500.756 print(f"Rp{harga:,.2f}")3print("Halo {nama}") tanpa huruf f menampilkan isi variabel nama.
4Pengguna mengetik 20 pada umur = input("Umur? "). Apa hasil umur + 1?