Setiap program berkomunikasi dengan lingkungannya melalui dua arah, yaitu menerima masukan dan menampilkan hasil. Pada Python, komunikasi itu ditangani dua fungsi bawaan, yaitu input() untuk membaca masukan dan print() untuk menampilkan keluaran. Topik ini membahas perilaku keduanya secara rinci, mulai dari argumen sep dan end milik print(), sifat nilai kembali input(), hingga cara menguji program berbasis masukan tanpa mengetik data satu per satu. Setelah topik ini dibaca, program yang berdialog dengan pengguna dapat ditulis dan diuji dengan keluaran yang dapat diprediksi.
Alur data masukan dan keluaran#
Program mengolah data yang datang dari luar, lalu mengirimkan hasilnya kembali ke luar. Jalur masuk disebut masukan standar (standard input), yaitu aliran data yang pada umumnya berasal dari papan ketik. Jalur keluar disebut keluaran standar (standard output), yaitu aliran teks yang pada umumnya ditujukan ke layar terminal. Dua fungsi bawaan Python mengurus kedua jalur itu, yaitu input() pada sisi masukan dan print() pada sisi keluaran. Keduanya bekerja pada arah yang berlawanan tetapi berbagi prinsip yang sama, yaitu mengalirkan teks dari atau ke luar program.
Diagram berikut merangkum alur tersebut. Masukan dari papan ketik dibaca program melalui input(), sedangkan hasil olahan ditulis kembali ke layar melalui print(). Pemahaman atas kedua ujung alur ini menjadi bekal bagi pembahasan kedua fungsi pada bagian-bagian berikutnya.
Menampilkan keluaran dengan print()#
print() menerima satu atau beberapa argumen, menampilkan seluruhnya secara berurutan dengan satu spasi sebagai pemisah, lalu mengakhiri tampilan dengan pemindah baris. Pemindah baris otomatis inilah yang membuat setiap pemanggilan print() tampil pada baris tersendiri. Tipe apa pun yang diberikan sebagai argumen dikonversi menjadi teks lebih dahulu, sehingga angka, boolean, dan tipe lain dapat dicampur dalam satu pemanggilan. Sebagai fungsi, print() juga mengembalikan sebuah nilai, dan nilainya selalu None, sehingga menyimpan hasil pemanggilannya tidak pernah berguna.
hasil = print("Suhu hari ini:", 24)
print(hasil)Suhu hari ini: 24
NoneArgumen pertama berupa string dan argumen kedua berupa int, tetapi keduanya dicetak berdampingan dengan satu spasi di antaranya. Nilai yang tersimpan pada variabel hasil adalah None karena print() hanya menampilkan, tidak mengembalikan teks yang dicetaknya. Pemisahan argumen dengan koma sudah menambahkan spasi, sehingga penambahan spasi manual di dalam string tidak diperlukan. Perilaku pemisahan ini adalah bentuk bawaan, dan bagian berikutnya menunjukkan bahwa pemisah maupun pengakhirnya dapat diganti.
Parameter sep dan end#
Dua argumen bernama mengatur bentuk keluaran print(), yaitu sep untuk pemisah antar argumen dan end untuk pengakhir baris. Nilai bawaan sep adalah satu spasi, sedangkan nilai bawaan end adalah pemindah baris \n. Karena sep dan end adalah argumen bernama, keduanya ditulis setelah seluruh nilai yang akan dicetak.
print("2026", "11", "02", sep="-")
print("a", "b", "c", sep="")
print("Memuat", end="... ")
print("selesai")2026-11-02
abc
Memuat... selesaiBaris pertama menyusun tanggal dengan tanda hubung sebagai pemisah, sedangkan baris kedua menempelkan tiga huruf dengan pemisah kosong. Pada baris ketiga, end yang semula pemindah baris diganti rangkaian titik dan spasi, sehingga print() berikutnya menyambung pada baris yang sama. Pola end="" dipakai ketika satu baris keluaran dibangun bertahap dari beberapa pemanggilan, misalnya saat menampilkan kemajuan suatu proses. Kombinasi keduanya mencakup kebutuhan pemformatan yang paling sering muncul pada program baris perintah.
Membaca masukan dengan input()#
input() menghentikan eksekusi program, menampilkan teks prompt apabila diberikan, membaca satu baris dari papan ketik, lalu mengembalikan baris itu sebagai string tanpa pemindah baris di ujungnya. Program yang memanggil input() tidak melanjutkan eksekusinya sampai masukan diterima. Prompt dicetak tanpa pemindah baris, sehingga kursor berhenti tepat setelah teks prompt dan ketikan pengguna menyambung di tempat yang sama.
Blok berikut menampilkan program utuh yang membaca dua masukan. Blok python ditandai tidak-dijalankan karena pemanggilan input() menunggu ketikan. Demonstrasi diberikan melalui pipa (pipe) pada perintah bash di bawah blok python, yaitu teknik mengirim teks ke masukan standar tanpa mengetik data secara langsung.
# tidak-dijalankan: input() menunggu masukan, jalankan dengan pipa masukan
nama = input("Masukkan nama: ")
umur = int(input("Masukkan umur: "))
print(f"Halo {nama}, umur {umur} tahun sama dengan {umur * 12} bulan.")# masukan diberikan melalui pipa, satu baris untuk setiap pemanggilan input()
printf "Citra\n18\n" | python3 umur.pyMasukkan nama: Masukkan umur: Halo Citra, umur 18 tahun sama dengan 216 bulan.Perintah printf mengirim dua baris teks, dan setiap baris dikonsumsi satu pemanggilan input() secara berurutan. Keluarannya tampak berdempet karena eksekusi melalui pipa tidak mencerminkan ketikan ke layar, berbeda dengan terminal interaktif yang menampilkan huruf yang diketik pengguna. Nilai 18 yang diterima sebagai teks dikonversi lebih dahulu dengan int(), sehingga perkalian umur * 12 menghasilkan 216.
Sifat string dari nilai kembali input() berlaku juga ketika masukannya berisi digit murni. Berkas berikut memeriksanya dengan type().
# tidak-dijalankan: input() menunggu masukan, jalankan dengan pipa masukan
angka = input("Masukkan sebuah angka: ")
print(angka, type(angka).__name__)# periksa tipe nilai kembali input() untuk masukan berisi digit
printf "21\n" | python3 tipe-masukan.pyMasukkan sebuah angka: 21 strTeks 21 tetap dikembalikan sebagai str, sehingga aritmetika langsung atasnya tidak dapat dilakukan. Apabila masukan memang dimaksudkan sebagai bilangan, konversikan sejak awal dengan membungkus pemanggilannya, misalnya umur = int(input("Masukkan umur: ")). Pola ini menjaga variabel tetap bertipe angka sejak baris pertama.
Kesalahan umum#
Tiga error paling lazim pada I/O dasar dibahas di bagian ini. Dua yang pertama berkait dengan tipe masukan dan muncul saat program berjalan, bukan saat kode ditulis. Kesalahan pertama adalah menghitung langsung atas hasil input() tanpa konversi. Nilai masukan tetap berupa string, dan penjumlahan string dengan angka memicu TypeError.
teks = "18"
try:
hasil = teks + 1
except TypeError as e:
print(type(e).__name__, str(e))TypeError can only concatenate str (not "int") to strPerbaikannya adalah mengonversi masukan dengan int() sebelum dihitung, sebagaimana dilakukan berkas umur.py pada bagian sebelumnya. Kesalahan kedua adalah memberikan teks bukan bilangan kepada int(). Fungsi int() menolak literal yang tidak dapat diurai dan memicu ValueError.
try:
int("dua belas")
except ValueError as e:
print(type(e).__name__, str(e))ValueError invalid literal for int() with base 10: 'dua belas'Perbaikannya dimulai dari isi masukan, yaitu memastikan nilai yang diminta memang berupa digit, atau memeriksa teks dengan metode isdigit() sebelum konversi dilakukan. Kesalahan ketiga bersifat tata letak, yaitu mengira prompt input() diakhiri pemindah baris. Prompt ditulis apa adanya tanpa pemindah baris, sehingga apabila keluaran menuntut prompt pada barisnya sendiri, pemindah baris \n harus ditulis manual di ujung teks prompt.
Ringkasan#
- print() menampilkan seluruh argumennya secara berurutan dengan sep sebagai pemisah dan end sebagai pengakhir, lalu mengembalikan None.
- input() membaca satu baris masukan dan mengembalikannya sebagai string, sehingga konversi int() atau float() diperlukan sebelum aritmetika.
- Program yang memanggil input() berhenti menunggu masukan, dan melalui pipa setiap baris masukan dikonsumsi satu pemanggilan input().
- ValueError dari int() menandakan teks yang bukan bilangan, sedangkan TypeError menandakan aritmetika campuran string dan angka.
Referensi#
- Built-in Functions: input() dan print() — Python Software Foundation — Dokumentasi resmi kedua fungsi, termasuk perilaku sep dan end serta sifat prompt input().
- Input and Output — Python Software Foundation — Bagian tutorial resmi tentang menampilkan keluaran dan membaca masukan.
- System-specific parameters and functions: sys.stdin — Python Software Foundation — Dokumentasi aliran masukan standar yang menjadi sumber data input().