Berikut ini adalah pertanyaan dari Hampster24918 pada mata pelajaran TI untuk jenjang Sekolah Dasar
User memasukkan hidangan dan program dengan bantuan for loop, untuk memeriksa jika hidangan ada di menu daftar.
Jika hidangan sudah ada, maka program menampilkan pesan: "Hidangan ini ada di menu!"
Jawaban dan Penjelasan
Berikut ini adalah pilihan jawaban terbaik dari pertanyaan diatas.
Kode Program (Python)
# carimenu01.py
# oleh: HY
def cari_item_menu(kata_kunci: str, daftarmenu: list) -> tuple:
# Menerima kata kunci dan daftar menu.
# Mengembalikan tuple hasil:
# - hasil[0] menyimpan item menu yang tepat sama dengan kata kunci.
# - hasil[1] menyimpan item menu yang serupa dengan kata kunci.
# "Serupa" = kata kunci mengawali item menu.
# Contoh:
# - "nasi" serupa dengan "nasi goreng"
# - "goreng" tidak serupa dengan "nasi goreng"
# Pembandingan string dilakukan secara case-insensitive.
hasil = ([], [])
kata_kunci = kata_kunci.strip().lower()
for i in range(len(daftarmenu)):
item = daftarmenu[i][0]
item = str(item).strip().lower()
if kata_kunci == item: # tepat sama
hasil[0].append(daftarmenu[i])
elif item.startswith(kata_kunci): # serupa
hasil[1].append(daftarmenu[i])
# end if
# end for
return hasil
# end def cari_menu()
def output_pencarian(hasil: tuple) -> None:
# Mencetak hasil pencarian
# Pada tuple hasil, kemungkinannya adalah:
# 1. hasil[0] ada: ada item menu yang tepat sama dengan
# kata kunci.
# 1.a. hasil[1] ada: ada juga item yang serupa dengan
# kata kunci.
# 2. hasil[0] kosong, tetapi hasil[1] ada, maka
# tidak ada item menu yang tepat sama, tetapi ada
# yang serupa dengan kata kunci.
# 3. hasil[0] dan hasil[1] sama-sama kosong, artinya
# tidak ada item menu yang tepat sama atau serupa
# dengan kata kunci.
if len(hasil[0]) == 1: # tepat sama
item, harga = hasil[0][0]
print("Hidangan ini ada di menu!")
print(f"==> {item}, harga: {str(harga)}.")
if len(hasil[1]) > 0: # serupa
print("Ada menu lain yang mirip nih, mau coba?")
i = 0
for item, harga in hasil[1]:
i += 1
print(f"{'==>' if i == 1 else ' '} {i:2d}. {str(item).ljust(20)}, harga: {str(harga).rjust(6)}.")
# end for
# end if
elif len(hasil[1]) > 0:
print("Maaf, hidangan ini tidak ada di menu.")
print("Namun, ada menu lain yang serupa nih, mau coba?")
i = 0
for item, harga in hasil[1]:
i += 1
print(f"{'==>' if i == 1 else ' '} {i:2d}. {str(item).ljust(20)}, harga: {str(harga).rjust(6)}.")
# end for
else: # tidak ketemu
print("Maaf, hidangan ini dan yang serupa tidak ada di menu.")
# end if
# end def output_pencarian()
### PROGRAM UTAMA ###
if __name__ == '__main__':
# Inisialisasi daftar menu
daftarmenu = [
# Makanan
("Nasi Goreng", 15000),
("Nasi Goreng Spesial", 25000),
("Nasi Gudeg", 12500),
("Nasi Rames", 10000),
("Mie Goreng", 16000),
("Mie Goreng Spesial", 27500),
("Mie Ayam", 15000),
("Mie Ayam Bakso", 18000),
("Mie Ayam Jumbo", 25000),
# Minuman
("Teh Panas", 2000),
("Es Teh", 2000),
("Kopi Panas", 3000),
("Es Kopi", 4000),
("Kopi Susu", 5000),
("Soda Gembira", 8000)
]
menufav = ""
# Infinte loop untuk pertanyaan
# Kondisi berhenti: input kosong
while True:
menufav = input("Menu favorit Anda? (tekan Enter untuk selesai) ")
if menufav == "":
print("Terima kasih!")
break
# end if
hasil_pencarian = cari_item_menu(menufav, daftarmenu)
output_pencarian(hasil_pencarian)
# end while
### end of program
Pembahasan
Saya rasa komentar-komentar pada kode program di atas sudah cukup menjelaskan. Intinya, pencarian kata kunci menu favorit yang di-input-kan dilakukan secara sekuensial.
Kita bisa menggunakan struktur data list/array untuk menyimpan daftar menu. Pada program di atas, saya gunakan list dari tuple, di mana setiap tuple menyimpan nama sebuah item menu dan harganya.
Algoritmanya secara umum adalah:
- Menerima masukan kata kunci menu favorit.
- Jika kata kunci kosong, keluar (dari loop).
- Mencari kata kunci dalam daftar menu.
Kemungkinan hasilnya adalah:
a. Terdapat item menu yang tepat sama dengan kata kunci.
b. Terdapat item menu yang tepat sama dengan kata kunci, dan terdapat pula item menu yang "serupa" dengan kata kunci, di mana item menu tersebut diawali oleh kata kunci.
c. Tidak terdapat item menu yang tepat sama, namun terdapat item menu yang serupa.
d. Tidak terdapat item menu yang tepat sama dan juga serupa, alias pencarian tidak menghasilkan apa-apa. - Cetak output hasil pencarian.
- Ulangi langkah 1.
Pada program di atas, saya tentukan bahwa loop akan selesai jika masukan kosong, atau user menekan Enter. Batasan program dan algoritma tersebut dapat Anda tentukan sendiri, tidak harus seperti algoritma di atas.
Sebagai ilustrasi, contoh hasil eksekusi dapat dilihat pada gambar.
Semoga dengan pertanyaan yang sudah terjawab oleh henriyulianto dapat membantu memudahkan mengerjakan soal, tugas dan PR sekolah kalian.
Apabila terdapat kesalahan dalam mengerjakan soal, silahkan koreksi jawaban dengan mengirimkan email ke yomemimo.com melalui halaman Contact
Last Update: Thu, 03 Nov 22