Simple Input and Output
Setelah mempelajari bagaimana percabangan dapat memengaruhi alur program, langkah selanjutnya adalah memanfaatkan percabangan tersebut untuk memberikan kendali bagi pengguna untuk memengaruhi alur program. Misalnya, kamu ingin merancang sebuah program yang dapat menyapa pengguna sesuai dengan nama yang ia masukkan ke program. Atau kamu ingin merancang sebuah program yang dapat membantu pengguna dalam menghitung suatu rumus Fisika kompleks. Di sinilah kamu mulai membutuhkan masukan dari pengguna.
Onboarding: Notasi Fungsi dalam Python
Dalam menggunakan fungsi di Python, akan ada situasi di mana sebuah fungsi memiliki sistem parameter yang kompleks sehingga membutuhkan kemampuan khusus untuk membaca notasi fungsi yang diberikan pada dokumentasi yang tersedia. Topik ini akan dibahas lebih dalam pada Pekan 03 dan anak sub-bab ini bersifat sebagai pengenalan untuk menggunakan tiga fungsi yang akan dibahas selanjutnya, yakni input()
, print()
, dan eval()
.
Setiap fungsi, layaknya dalam matematika, memiliki argumen yang memengaruhi perilaku dari fungsi tersebut. Bedanya, suatu fungsi dalam pemrograman boleh tidak memiliki argumen sama sekali. Ada dua cara untuk memberikan argumen dalam Python:
Positional Argument: Argumen yang dipetakan sesuai dengan urutan penempatannya.
Contoh notasi:
power(x,y)Contoh penggunaan:
power(1,2)Berarti, pemanggilan fungsi
power(1,2)
akan memetakan x ke 1, dan y ke 2.Keyword Argument: Argumen yang dipetakan sesuai dengan variabel argumen yang diberikan saat fungsi tersebut dirancang.
Contoh notasi:
power(x,y)Contoh penggunaan:
power(y=2,x=1)Meskipun secara posisi terbalik, Python akan tetap memetakan x ke 1 dan y ke 2.
Ada beberapa kasus di mana argumen tertentu harus diberikan sebagai keyword argument.
Contoh notasi fungsi di mana custom_arg
harus diberikan sebagai keyword argument:
Contoh penggunaan:
note
Sebuah argumen dapat memiliki sebuah nilai default di mana ketika tidak ditemukan nilai untuk dipetakan ke argumen tersebut saat dipanggil, nilai default akan dipanggil.
Contoh notasi:
Contoh penggunaan dengan nilai tidak lengkap:
Maka, Python akan secara otomatis menggunakan nilai default untuk y.
input()
Notasi Fungsi
input(prompt=None)Daftar argumen:
prompt
(Positional/Keyword): Permintaan yang akan ditampilkan kepada pengguna saat proses masukan berlangsung (default None / tidak ada permintaan yang ditampilkan).
Fungsi input()
digunakan untuk menerima masukan dari pengguna dan mengembalikannya dalam bentuk String kepada siapapun yang memanggilnya. Umumnya, fungsi input()
ini digunakan untuk mengisi suatu variabel sehingga umumnya fungsi ini dipanggil oleh variabel. Jika digunakan tanpa variabel, hasil masukan akan tersimpan di blok memori namun tidak dapat dipanggil dan menjadi sampah.
Contoh penggunaan:
Pada saat program dijalankan, program akan rehat sejenak (tidak berhenti) pada pemanggilan fungsi untuk menunggu masukan dari pengguna. Pengguna dapat mengetikkan argumen sepanjang apapun selama tombol Enter
belum ditekan. Tombol tersebut merupakan sinyal bagi Python bahwa pengguna telah selesai memberikan masukan dan program dapat dilanjutkan.
Apabila contoh penggunaan dijalankan, tahapan yang ditempuh adalah:
Program akan meminta masukan untuk variabel
username
.(Tampilan di Shell)
Enter your name:Setelah masukan selesai diberikan ke variabel yang berhak, program akan meminta masukan untuk variabel
height
.(Tampilan di Shell)
Enter your name: Harnin TodiEnter your height:Program selesai setelah masukan selesai diberikan ke variabel yang berhak.
(Tampilan di Shell)
Enter your name: Harnin TodiEnter your height: 170>>>
Perlu dicatat bahwa semua masukan yang diberikan oleh pengguna (terlepas dari tipe data yang seharusnya merepresentasikan masukan tersebut) akan diperlakukan sebagai sebuah String. Apabila kamu merasa yakin terhadap tipe dari data yang akan dimasukkan oleh pengguna, kamu dapat membungkus pemanggilan fungsi tersebut dengan type casting (dibahas pada subbab 1C) sesuai dengan tipe data yang diinginkan.
Contoh:
Dalam hal ini, masukan pengguna untuk variabel height
akan dikonversi menjadi Integer sebelum dipetakan ke sebuah variabel. Seperti pada type casting, struktur ini harus digunakan dengan bijak karena merupakan salah satu point of failure.
Coba amati hasil dari program di bawah ini:
print()
Notasi fungsi
print(*value, sep=' ', end='\n', file=sys.stdout, flush=False)Daftar argumen:
value
(Positional, Infinite): Objek yang akan dicetak (bisa berapa pun dan sepanjang apapun). Pemisahan antar-objek dilakukan dengan tanda koma dan akan dicetak dengan pemisah yang didefinisikan olehsep
.sep
(Keyword): String yang memisahkan antar-objek yang dicetak (default- Spasi).
end
(Keyword): String yang ditambahkan di akhir proses pencetakan dan digunakan sebagai pemisah antara pencetakan yang dilakukan dengan fungsi tersebut dan fungsi selanjutnya (default\n
- Representasi dari Enter/baris baru).file
(Keyword): Tujuan dari hasil pencetakan (defaultsys.stdout
- mengeluarkan ke *interpreter* yang akan dioper ke Shell untuk ditampilkan di Shell).flush
(Keyword): Apakah benda yang akan dicetak harus langsung di-*flush* (dikeluarkan) atau menunggu antrian *buffer* sistem (defaultFalse
- menunggu antrian *buffer* sistem).
Fungsi print()
digunakan untuk mengeluarkan sesuatu dalam bentuk String ke Shell (default) maupun ke sebuah berkas teks (memodifikasi argumen file
). Fungsi ini dapat mencetak benda apapun yang memiliki representasi String (dapat dicek dengan menggunakan type casting String) di mana benda non-String apapun yang dijadikan argumen akan secara implisit di-cast ke String dan dicetak.
Contoh penggunaan:
Hasil:
Cobalah untuk mencari hasil dari program berikut ini!
eval()
Notasi Fungsi
eval(source, globals=None, locals=None)Daftar argumen:
source
(Positional): Sebuah String yang mengandung ekspresi Pythonglobals
&locals
(Positional): Konteks yang digunakan dalam mengevaluasi ekspresi (defaultNone
- menggunakan konteks bawaan Python)
Fungsi eval()
merupakan fitur spesial Python yang dapat menerima argumen berupa suatu String yang mengandung ekspresi valid Python dan menghasilkan hasil yang sesuai dengan ekspresi tersebut. Apapun isi dari String yang dijadikan sumber akan diperlakukan seperti ketika kamu mengetikannya langsung di Shell tanpa menggunakan tanda kutip.
Untuk membuktikan hasil dari fungsi ini, kamu dapat menggunakan fungsi type(objek)
untuk melihat tipe data dari objek yang dimaksud.
Contoh:
Hasil:
Secara sederhana, fungsi ini akan meminta Python untuk menghilangkan pengapit tanda kutip terluar yang merupakan penanda tipe data String sehingga isinya bisa dievaluasi. Maka dari itu, sebuah String yang tidak dapat dievaluasi sebagai ekspresi Python tidak dapat dikembalikan menjadi String dan akan menimbulkan error.
Contoh: