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:

python
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:

bash
echo "Budi" | python3 sapa.py

Output yang Dihasilkan:

text
Siapa nama kamu? Halo, Budi

Output 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:

python
umur = input("Berapa umur kamu? ")
print("Tipe data umur:", type(umur))

Output yang Dihasilkan:

text
Berapa umur kamu? Tipe data umur: <class 'str'>

Ketukan 20 dianggap teks "20", bukan angka. Konsekuensinya langsung terasa saat teks tersebut dipakai berhitung:

python
umur = input("Berapa umur kamu? ")
tahun_depan = umur + 1
print("Tahun depan umur kamu", tahun_depan)

Output yang Dihasilkan:

text
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 str

Operator + 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:

python
umur = input("Berapa umur kamu? ")
umur = int(umur)
tahun_depan = umur + 1
print("Tahun depan umur kamu", tahun_depan, "tahun")

Output yang Dihasilkan:

text
Berapa umur kamu? Tahun depan umur kamu 21 tahun

Mari kita telaah alurnya:

  1. Baris 1: input() mengembalikan string, misalnya "20", dan disimpan ke umur.
  2. Baris 2: int("20") menghasilkan integer 20 yang menimpa nilai lama di umur.
  3. Baris 3–4: umur + 1 kini menjadi operasi antar integer, dan hasilnya 21 dicetak.

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:

text
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 line

Dalam 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.