Program yang kita tulis sejauh ini berbicara satu arah: mencetak hasil ke layar. Program interaktif membutuhkan arus sebaliknya — membaca ketikan pengguna selagi program berjalan. Python menyediakan function bawaan input() untuk tugas tersebut. Chapter ini membahas cara memakai input(), fakta penting bahwa hasilnya selalu berupa string, konversi ke angka, serta error yang muncul ketika aliran input berakhir lebih cepat dari yang diharapkan.
input() dan Parameter prompt #
Function input() menghentikan sementara eksekusi program, menunggu pengguna mengetik satu baris, lalu melanjutkan eksekusi setelah tombol Enter ditekan. Parameter prompt menampilkan pertanyaan sebelum berhenti:
nama = input("Siapa nama kamu? ")
print("Halo,", nama)Saat dijalankan interaktif di terminal, program mencetak pertanyaan Siapa nama kamu? , kursor berhenti tepat setelahnya menunggu ketikan, dan setelah pengguna menekan Enter, baris Halo, Budi muncul di baris berikutnya.
Karena input() menunggu ketikan, contoh-contoh pada buku ini didemonstrasikan dengan input yang dialirkan lewat pipe agar hasilnya dapat diverifikasi ulang. Perintah echo "Budi" | python3 sapa.py menjalankan file sapa.py sambil mengirim teks Budi sebagai satu baris input:
echo "Budi" | python3 sapa.pyOutput yang Dihasilkan:
Siapa nama kamu? Halo, BudiOutput di atas muncul dalam satu baris karena input() mencetak prompt tanpa baris baru. Saat dijalankan interaktif, tampilan di layar terlihat sebagai dua bagian: pertanyaan beserta jawaban yang diketik pengguna (Siapa nama kamu? Budi), lalu baris Halo, Budi di bawahnya. Kedua mode tersebut menjalankan kode yang sama persis.
input() Selalu Mengembalikan String #
Fakta paling penting tentang input(): nilai kembalinya selalu bertipe str, apa pun isinya. Program berikut meminta input berupa angka, lalu memeriksa tipenya:
umur = input("Berapa umur kamu? ")
print("Tipe data umur:", type(umur))Output yang Dihasilkan:
Berapa umur kamu? Tipe data umur: <class 'str'>Ketukan 20 dianggap teks "20", bukan angka. Konsekuensinya langsung terasa saat teks tersebut dipakai berhitung:
umur = input("Berapa umur kamu? ")
tahun_depan = umur + 1
print("Tahun depan umur kamu", tahun_depan)Output yang Dihasilkan:
Berapa umur kamu? Traceback (most recent call last):
File "umur.py", line 2, in <module>
tahun_depan = umur + 1
~~~~~^~~
TypeError: can only concatenate str (not "int") to strOperator + pada string berarti penyambungan teks, dan penyambungan string dengan integer tidak diizinkan. Perbaikannya adalah mengonversi input sebelum dipakai berhitung.
Konversi Input ke Angka #
Function int() mengubah string berisi angka menjadi integer. Pola lengkapnya — baca, konversi, lalu hitung:
umur = input("Berapa umur kamu? ")
umur = int(umur)
tahun_depan = umur + 1
print("Tahun depan umur kamu", tahun_depan, "tahun")Output yang Dihasilkan:
Berapa umur kamu? Tahun depan umur kamu 21 tahunMari kita telaah alurnya:
- Baris 1:
input()mengembalikan string, misalnya"20", dan disimpan keumur. - Baris 2:
int("20")menghasilkan integer20yang menimpa nilai lama diumur. - Baris 3–4:
umur + 1kini menjadi operasi antar integer, dan hasilnya21dicetak.
Untuk bilangan desimal, function float() melakukan peran yang sama — misalnya float("170.5") menghasilkan 170.5. Pembahasan lengkap konversi antar tipe ada pada Chapter Type Conversion di Section Variabel dan Tipe Data.
EOFError: Ketika Input Berakhir Tanpa Baris #
Ketika input() mencapai akhir aliran input tanpa menemukan satu baris pun, interpreter mengangkat EOFError (EOF: end of file). Program sapa.py dari awal Chapter dijalankan tanpa input sama sekali akan tampak seperti ini:
Siapa nama kamu? Traceback (most recent call last):
File "sapa.py", line 1, in <module>
nama = input("Siapa nama kamu? ")
^^^^^^^^^^^^^^^^^^^^^^^^^^
EOFError: EOF when reading a lineDalam pemakaian interaktif, kondisi ini terjadi ketika pengguna menekan Ctrl+D (Linux dan macOS) atau Ctrl+Z diikuti Enter (Windows) alih-alih mengetik jawaban. Penyebab lain yang sering mengejutkan pemula: menjalankan program interaktif di lingkungan yang tidak menyediakan input — misalnya menjalankan file di sistem otomatis atau menjalankan sel kode yang salah di editor. Teknik menangkap EOFError dengan try/except menjadi materi Section Exception Handling.
Kita kini memiliki dua arah komunikasi lengkap: mencetak dengan print() dan membaca dengan input(). Satu rintangan terakhir sebelum program kita berjalan mulus adalah menghadapi — dan membaca — pesan error sintaks, materi Chapter penutup section ini.