Looping While dan User Input

Pada materi ini, kita akan belajar membuat program Python yang lebih interaktif. Interaktif artinya program dapat menerima masukan dari user dan dapat dikondisikan kapan berhenti dan kapan terus berjalan. Untuk mencapai kebutuhan tersebut, kita gunakan kombinasi fungsi input() dan looping while.

User Input

Python menyediakan function input() untuk membaca masukan dari user. Fungsi input() akan menunggu sampai user memberi masukan (input) tertentu dan menekan tombol Enter. Masukan user tersebut disimpan dalam sebuah variable, sehingga bisa digunakan untuk proses selanjutnya. Perhatikan baris perintah berikut ini.

>>> message = input("Silahkan ketik pesan: ")
Silahkan ketik pesan: halo
>>> print(message)
halo

Pada contoh di atas, fungsi input() dipanggil dengan disertai String atau teks berbunyi: “Silahkan ketik pesan: “. Maka pesan tersebut akanmuncul dilayar, sambil menunggu masukan dari user. Setelah user memberi masukan berupa kata “halo”, lalu diakhiri tombol “ENTER”, hasilnya disimpan dalam variable message. Sehingga, ketika perintah print dijalankan untuk menampilkan nilai dari variable message, maka teks “halo” yang ditampilkan. Pada saat diminta input, jika user langsung menekan tombol “ENTER”, maka nilai variable message adalah teks kosong.

Setiap menggunakan fungsi input(), idealnya kita menyertakan teks atau instruksi yang jelas, agar user mengerti masukan atau input apa yang harus dia berikan. Bila diperlukan, kita dapat menyimpan teks tersebut dalam sebuah variable, kemudian variable itu bisa gunakan ketika memanggil fungsi input(). Berikut contohnya.

>>> prompt = "Masukkan nama lengkap: "
>>> name = input(prompt)
Masukkan nama lengkap: Nathan Junior
>>> print("Hello " + name)
Hello Nathan Junior

Pada contoh di atas, fungsi input() dipanggil menggunakan teks dari variable prompt yang berbunyi “Masukkan nama lengkap: “. Masukan dari user disimpan dalam variable name, yang kemudian digabungkan dengan kata “Hello ” sebelum di tampilkan ke layar oleh perintah print.

Masukan dari user yang dihasilkan fungsi input() ini selalu berupa String. Walaupun user mengetikkan angka sebagai masukan (misal angka 20), maka angka tersebut dianggap String “20”. Lalu bagaimana jika kita ingin menggunakan angka tersebut untuk operasi numerik? Kita bisa memanfaatkan fungsi int() yang telah disediakan Python. Seperti layaknya fungsi str() berguna untuk men-string-kan suatu angka, fungsi int() ini berfungsi me-numerik-an sebuah String atau teks. Untuk lebih jelasnya, perhatikan program berikut ini.

Contoh Input
Contoh Input Numerik

Pada contoh di atas, program meminta masukan angka dari user sebanyak 2 kali, masing-masing disimpan dalam variable num1 dan num2. Pada baris ke-5, kedua variable tersebut dikalikan menggunakan operator numerik ‘*‘. Sehingga, ketika dihitung, num1 dan num2 perlu diubah sebagai angka terlebih dahulu, menggunakan fungsi int(). Hasil perkaliannya tentu saja berupa data numerik, yang disimpan dalam variable hasil. Terakhir, hasil perkalian digabungkan dengan pesan tambahan dan disimpan dalam variable message yang berupa String, sebelum nantinya ditampilkan ke layar. Karena hasil berupa data numerik, digunakanlah fungsi str() ketika hendak digabungkan dengan teks lainnya (baris ke-6).

Perhatikan area bawah dari screen capture di atas. Karena penulis menggunakan editor Visual Code, ada cara yang sedikit berbeda ketika menjalankan program interaktif. Sebelumnya, untuk menjalankan program, kita klik tombol Run (ALT + SHIFT + N) dan langsung terlihat hasilnya pada tab Output. Sedangkan pada contoh, penulis menggunakan Terminal. Hal ini dikarenakan tab Output hanya bisa menampilkan hasil program, namun tidak bisa membaca input dari keyboard. Pada tab Terminal, program dijalankan dengan perintah: python(spasi)nama_program.py (perhatikan tanda panah kuning di atas). Perintah ini dijalankan dari direktori tempat menyimpan program Python yang akan dijalankan, yakni direktori D:\play. Setelah perintah dijalankan, program akan running pada tab Terminal, dan user dapat memberikan input sesuai permintaan. Alternatif lain untuk menjalankan program interaktif adalah menggunakan Command Prompt bagi pengguna Windows, atau aplikas Terminal bagi pengguna Linux. Hasilnya akan sama saja.


Looping While

Pada materi List lanjutan, kita sudah mengenal looping for, yang berguna untuk mengeksekusi blok perintah secara berulang, sebanyak jumlah item dari suatu koleksi data. Sedangkan, looping menggunakan while, memungkinkan kita mengeksekusi blok perintah secara berulang, selama (while) kondisi tertentu masih dipenuhi (true). Masih ingat dengan pengecekan kondisi pada materi conditional statement? While adalah looping yang menggunakan conditional statement. Mari kita lihat contoh sederhana penggunaan While.

>>> iterate = 1
>>> while iterate <5:
>>>    print("Looping ke-"+ str(iterate))
>>>    iterate = iterate + 1
Looping ke-1
Looping ke-2
Looping ke-3
Looping ke-4

Pertama-tama variable iterate diberi nilai 1. Selanjutnya, selama (while) nilai iterate lebih kecil dari 5, lakukan blok perintah berikutnya. Perhatikan bahwa, blok perintah yang akan dijalankan berulang dalam konteks while, ditulis dengan indentasi 1 Tab. Pada contoh, perintah print dan operasi penambahan variable iterate adalah blok perintah “milik” while yang akan dijalankan secara berulang. Karena variable iterate selalu ditambah dengan angka 1, maka setelah perulangan beberapa kali, nilainya akan menjadi 5. Ketika iterate mencapai angka 5, kondisi iterate < 5 tidak lagi dipenuhi, alias False. Kondisi False menyebabkan looping while berakhir. Karena itu, program hanya menghasilkan 4 baris teks saja, yakni Looping ke-1 sampai dengan Looping ke-4.

Bila kita mengkombinasikan looping while dengan fungsi input(), maka kita dapat mengulang blok perintah tertentu, selama user tidak memberi input atau “perintah” untuk berhenti. Perhatikan contoh program sederhana berikut ini.

While with Input
Contoh While dengan Input

Pada program di atas, awalnya variable message diberi nilai kosong (baris ke-2). Lalu pada baris ke-4, selama (while) nilai message tidak sama dengan ‘quit‘, maka jalankan perintah baris ke-5 dan ke-6 yang ada dalam lingkup while. Pada baris ke-5, program akan menunggu masukan dari user. User bisa mengetikkan pesan apa saja, yang nantinya akan ditampilkan ke layar dengan perintah print pada baris ke-6. Setelah baris ke-6 selesai, program akan berulang lagi ke statement while dan mengecek kembali kondisi apakah nilai message yang baru bukan teks ‘quit‘. Dengan kata lain, selama user tidak memberi input quit ke variable message, maka program akan terus mengulang dan meminta masukan dari user.

Selain metode di atas, masih ada lagi beberapa cara yang bisa digunakan untuk “mengatur” alur looping while. Mari kita bahas satu per satu.

Penggunaan Flag

Pada contoh sebelumnya, program mengeksekusi blok perintah selama suatu kondisi dipenuhi. Namun, pada program yang lebih rumit, biasanya terdapat berbagai macam kondisi atau event yang dapat membuat program berhenti. Untuk program yang demikian, kita bisa menggunakan suatu variable penanda atau flag. Flag ini berperan sebagai signal, yang nilainya bisa berubah menjadi True atau False. Program akan terus berjalan selama flag bernilai True, dan akan berhenti ketika flag berubah menjadi False akibat event tertentu. Sehingga, looping while hanya perlu mengecek satu kondisi, yakni jalankan program selama flag bernilai True. Di bawah ini adalah program while.py dari contoh sebelumnya, dimodifikasi sehingga menggunakan flag.

Flag in While
Contoh While menggunakan Flag

Pada contoh di atas, kita gunakan variable flag bernama active, yang pertama-tama diberi nilai True. Pada baris ke-4, selama (while) flag active alias True, maka jalankan blok perintah di bawahnya. Kemudian pada baris ke-8, apabila ada kondisi dimana input dari user berupa teks ‘quit‘ ataupun teks kosong, maka flag active diubah menjadi False. Flag yang sudah tidak active alias False, akan membuat looping while pada baris ke-4 terhenti, dan program berakhir.

Statement Break

Untuk segera keluar dari looping while, dan mengabaikan perintah selanjutnya yang mungkin masih ada dalam lingkup while, Python menyediakan statement break. Mari perhatikan contoh berikut.

Break from While
Contoh Break dari While

Pada baris ke-4, looping while langsung menggunakan nilai True, artinya blok perintah di bawahnya akan selalu dijalankan. Namun, pada baris ke-6, ada pengecekan kondisi, bilamana input dari user (variable message) berupa teks ‘quit‘, maka jalankan perintah break, yang artinya keluar langsung dari looping while. Jika kondisi baris ke-6 tersebut dipenuhi, program berhenti dan perintah print di bawahnya pun, tidak akan dieksekusi. Terlihat dari screen shot tab Terminal yang bertanda panah kuning.

Statement Continue

Continue digunakan dalam while, untuk men-skip atau mengabaikan baris perintah yang berada dibawahnya, ketika kondisi tertentu ditemukan. Namun looping while tetap berlanjut. Kita simak contoh penggunaannya di bawah ini.

Continue in While
Contoh Continue dalam While

Pada program di atas, looping while menggunakan kondisi True (selalu benar) sehingga blok perintah di bawahnya akan dijalankan. Di dalam while, terdapat pengecekan 2 kondisi. Pada baris ke-5, statement if memeriksa apakah input dari user (nilai variable message) berupa teks kosong. Jika input kosong, maka abaikan perintah lain di bawahnya, dan lanjut alias langsung continue kembali ke proses while berikutnya (perhatikan tanda panah kuning). Itu sebabnya, pada tampilan tab Terminal, saat user langsung menekan tombol Enter ketika diminta input, tidak ada teks “Your input is: ” yang ditampilkan ke layar, namun program langsung meminta input kembali.

Dari semua contoh penggunaan while yang sudah dijabarkan, dapat dilihat bahwa setiap looping while, membutuhkan satu cara untuk berhenti. Untuk itu, program yang menggunakan while harus diuji dengan cermat. Pastikan ada kondisi yang bisa membuat while berhenti, agar program tidak mengalami infinite loop.


While pada List dan Dictionary

Setelah melihat penggunaan looping while secara sederhana, sekarang kita akan maju ke contoh yang lebih kompleks. Sebelumnya kita sudah menggunakan while untuk memproses satu data berupa input user. Sekarang, kita akan mencoba menangani data yang lebih banyak, menggunakan List dan Dictionary.

Memindahkan Data antar List

Misalkan ada sebuah List berisi daftar pesanan pelanggan. Kita akan memproses pesanan tersebut satu per satu, sekaligus memisahkan pesanan yang telah diproses ke dalam List terpisah.

Copying List
Contoh While pada List

Pada program di atas, kita mempunyai daftar pesanan dalam List ordered_food. Kemudian, kita siapkan List kosong bernama cooked_food, untuk “menyimpan” nama makanan yang telah selesai “dimasak”. Pada baris ke-4, selama (while) List ordered_food masih berisi data, lakukan baris perintah 5 sampai 7. Pada baris ke-5, makanan yang di-order “diambil” dari daftar dengan method pop(), kemudian “dimasak” atau diproses (baris ke-6). Pada baris ke-7, makanan yang telah “dimasak” ditambahkan ke List cooked_food. Baris 5 sampai ke-7 akan dijalankan berulang, sampai List ordered_food kosong. Setelah looping selesai, semua makanan yang selesai dimasak (dalam List cooked_food), “disajikan” ke layar (baris ke-10 dan 11).

Menghapus Data pada List

Pada materi List Dasar, kita menggunakan method remove() untuk menghapus data tertentu dari sebuah List. Namun method tersebut memiliki keterbatasan. Jika pada List ada beberapa data yang sama, maka hanya yang pertama kali “ditemukan” yang akan dihapus, sementara yang lainnya dibiarkan. Untuk mengatasinya, kita bisa memanggil method tersebut berulang-ulang, menggunakan looping while, sampai semau data yang ingin dihapus hilang dari List. Perhatikan contoh sederhana di bawah ini.

>>> languages = ['python', 'java', 'c++', 'python', 'ruby', 'java']
>>> print(languages)
['python', 'java', 'c++', 'python', 'ruby', 'java']

>>> while 'python' in languages:
>>>     languages.remove('python')
>>> print(languages)
['java', 'c++','ruby', 'java']

Pada contoh di atas, awalnya List languages memiliki beberapa data ‘python’ di dalamnya. Setelah menjalankan perintah while, yakni selama ‘python‘ masih ada dalam List languages, maka hapuslah ‘python‘. Selesai looping, tidak ada lagi ‘python’ dalam List languages.

Menyimpan Input User ke Dictionary

Dalam looping while, kita bisa meminta input atau masukan dari user sebanyak yang dibutuhkan, dan mengumpulkan informasi-informasi tadi ke dalam sebuah dictionary. Berikut ini contoh penggunaan while untuk “mengisi” data ke dalam sebuah dictionary.

Polling
Contoh While dan Dictionary

Di atas adalah program sederhana yang berfungsi untuk mendata makanan favorite setiap peserta. Pada baris ke-3, selama polling masih berlangsung (polling_active), maka mintalah input name beserta makanan (food) favorit dari peserta polling. Pada baris ke-6, program menambahkan setiap data polling ke dalam dictionary fav_food, dengan name sebagai key, dan food sebagai value-nya. Setelah itu, program menanyakan kembali, apakah ada peserta lain yang ingin ikut serta dalam polling (baris ke-7). Jika tidak ada (repeat sama dengan no), maka polling berakhir dengan ditandai polling_active = False (baris ke-8), sehingga while pun berakhir. Baris 12 dan 13 menampilkan isi dictionary fav_food, yang berupa pasangan keyvalues dari nama peserta dan makanan favoritnya.


Sampai di sini, kita sudah mempelajari berbagai tipe data pada Python, sekaligus memahami komponen-komponen dasar dari sebuah program. Mulai dari conditional statement, looping (for dan while), hingga mempelajari bagaimana cara menerima input dari user. Pada tutorial selanjutnya, kita akan mempelajari, bagaimana memilah blok perintah pada suatu program menjadi sebuah function, yang dapat dipakai berulang kali, sehingga program menjadi lebih efisien.

What do you think? Leave a Comment Below.

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

Up ↑

%d bloggers like this: