"Konservasi mangrove itu kayak ngejaga harta karun alam, bikin bumi tetep hijau dan lestari! ðīâĻ"
Doa: "Ya Tuhan, bantu kami membangun solusi cerdas untuk menjaga mangrove dan mendukung komunitas, biar Indonesia makin hijau. Aamiin. ð"
Yo, bro, Chapter 20 ini adalah puncak petualangan coding kita! ð Kita bakal ngegas pol bikin proyek besar bertajuk Biodiversity Mangrove Conservation yang nyatuin semua ilmu dari Chapter 10-19: modul, error handling, file handling, OOP, regex, datetime, logging, sampe JSON handling. Proyek ini dirancang untuk bantu komunitas lingkungan kayak BioMac (Biodiversity Mangrove Conservation) ngelola data konservasi mangrove, donasi, dan aktivitas lapangan dengan cara yang efisien, terstruktur, dan super kekinian! ðĨ Aplikasi ini bakal bikin tim BioMac bisa kerja lebih cerdas, hemat waktu, dan bikin dampak nyata untuk lingkungan dan sosial. ðð
Mas Azmi: "Mas Arry, mangrove di pantai kami butuh perlindungan serius, bro! ð Tim BioMac sering bingung ngatur data tanam pohon, donasi, sama laporan kegiatan. Bisa bantu bikin sistem yang simple tapi powerful? Aku juga mau belajar, biar tim bisa maintain sendiri! ð"
Mas Arry: "Chill, Mas Azmi! ð Aku sama ECC Team siap ngegas! Kita bakal bikin proyek Biodiversity Mangrove Conservation pake Python. Sistemnya rapi, pake modul, logging, JSON, sampe OOP, biar data kamu aman dan gampang diakses. Plus, aku kasih penjelasan detail biar kamu paham setiap langkahnya. Deal? ðŠ"
Mas Azmi: "Gila, kece banget, Mas! ð Tapi aku punya 7 pertanyaan penting yang harus diselesain tim kamu. Ini soal data mangrove, donasi, sama laporan yang bener-bener kami butuhin di lapangan. Bisa? ð§"
Mas Arry: "Beres, bro! ð ECC Team punya tenaga ahli yang siap ngegas. Kita bakal bikin solusi pake materi Chapter 10-19, biar sesuai kebutuhan BioMac. Plus, aku kasih narasi yang bikin kamu ngerti kenapa kodenya begitu. Yuk, kita mulai! ðīââïļ"
Mas Azmi, sebagai leader BioMac, punya 7 kebutuhan spesifik yang harus diselesaikan tim Mas Arry pake Python. Ini bukan cuma soal coding, tapi bikin solusi yang bisa diimplementasi nyata di lapangan, mendukung konservasi mangrove, ngatur donasi, dan bikin laporan yang bermanfaat buat tim BioMac. Berikut daftarnya:
Berikut tutorial lengkap dengan gaya milenial yang asik, pake bahasa Indonesia, dan dirancang untuk README.md di GitHub/GitPages. Setiap query punya penjelasan detail, narasi output, penjelasan kode, logika query, Do and Don'ts, plus quotes motivasi yang bikin semangat. Yuk, kita bikin proyek ini bareng Mas Azmi, Mas Arry, dan ECC Team! ðð
Mas Azmi: "Mas Arry, tim BioMac sering ribet ngatur data tanam pohon. Bisa bikin modul yang gampang buat input jumlah, jenis, dan lokasi pohon? Aku pengen data ini rapi, kayak playlist Spotify! ðķð"
Mas Arry: "Bisa banget, Mas Azmi! ð Kita bikin modul mangrove.py
pake fungsi-fungsi simpel tapi powerful. Data tanam pohon bakal teratur, kayak kotak penyimpanan aesthetic! ðŠīâĻ"
Konsep Modul (Chapter 10): Modul di Python adalah file .py yang berisi fungsi, kelas, atau variabel yang bisa diimpor ke file lain, bikin kode terorganisir dan reusable. Kita bikin mangrove.py
untuk ngelola data pohon, dan main.py
untuk pakai modulnya. Ini bikin sistem BioMac lebih rapi, kayak nyusun playlist favorit! ð§
Cara Import Modul di Terminal/VSCode:
mangrove.py
dan main.py
di folder yang sama. ðmain.py
dengan perintah: python main.py
. ðpython --version
). â
# mangrove.py def tambah_pohon(jumlah, jenis, lokasi): return {"jumlah": jumlah, "jenis": jenis, "lokasi": lokasi} def lihat_data(data_pohon): for i, pohon in enumerate(data_pohon, 1): print(f"Pohon {i}: {pohon['jumlah']} {pohon['jenis']} di {pohon['lokasi']}") # main.py from mangrove import tambah_pohon, lihat_data data_pohon = [] data_pohon.append(tambah_pohon(10, "Mangrove", "Pantai")) data_pohon.append(tambah_pohon(5, "Bakau", "Muara")) lihat_data(data_pohon)
Pohon 1: 10 Mangrove di Pantai Pohon 2: 5 Bakau di Muara
Penjelasan Output Detail: Outputnya nunjukin dua baris data pohon yang disimpen. Baris pertama bilang ada 10 pohon Mangrove ditanam di Pantai, dan baris kedua bilang ada 5 pohon Bakau di Muara. Fungsi lihat_data
ngelup list data_pohon
pake enumerate
biar ada nomor urut (1, 2, dst.), dan nampilin tiap pohon dalam format: jumlah, jenis, lokasi. Data disimpen sebagai dictionary biar fleksibel dan gampang diakses, kayak nyusun playlist dengan judul lagu yang jelas! ðķ
Penjelasan Query: Kode ini bikin modul mangrove.py
(Chapter 10) dengan dua fungsi: tambah_pohon
nge-return dictionary dengan data pohon (jumlah, jenis, lokasi), dan lihat_data
nampilin semua data pohon dalam list pake loop. Di main.py
, kita impor modul pake from mangrove import
, simpen dua data pohon pake tambah_pohon
, dan tampilin pake lihat_data
. Modul ini bikin kode terpisah dan reusable, cocok buat tim BioMac yang butuh sistem simpel tapi terorganisir di lapangan. Tema mangrove relevan sama konservasi lingkungan, dan struktur ini gampang dimengerti, kayak nyusun playlist favorit yang bisa dipake kapan aja! ð§ð
Penjelasan Logic Query: Logika di sini kayak bikin kotak LEGO yang gampang disusun ulang. Kita pisahin fungsi ke mangrove.py
biar kode modular, jadi gampang ditambah atau diubah tanpa bikin pusing. Fungsi tambah_pohon
bikin dictionary untuk nyimpen data pohon, soalnya dictionary fleksibel buat nyimpen key-value pair (misalnya "jumlah": 10). Fungsi lihat_data
pake enumerate
untuk kasih nomor urut otomatis, bikin output rapi kayak daftar lagu. Di main.py
, kita simpen data ke list data_pohon
soalnya list gampang ditambah elemen baru. Impor modul pake from mangrove import
bikin kode utama bersih, fokus ke logika utama: tambah dan tampilin data. Struktur ini bikin sistem BioMac efisien, kayak nyanyi lagu dengan playlist yang udah tertata rapi! ðĩâĻ
Do and Don'ts:
tambah_pohon
, biar tim gampang ngerti. ðimport
, kalo ga fungsinya ga jalan. ðĻ"Setiap pohon yang kamu tanam adalah langkah kecil buat bikin bumi lebih hijau. Keep it green, bro! ðŋð"
Mas Azmi: "Mas Arry, kadang tim salah input donasi, misalnya masukin huruf atau angka negatif. Bisa bikin sistem yang ga crash tapi kasih warning jelas? ð ð"
Mas Arry: "Tenang, Mas Azmi! ð Kita pake try-except (Chapter 11) biar sistem tangguh. Kalo input salah, kita kasih pesan yang bikin tim ngerti apa yang harus diperbaiki. ðŠâĻ"
Konsep Error Handling (Chapter 11): Error handling pake try-except
nangkep error kayak input bukan angka atau nilai negatif, kasih pesan jelas tanpa crash. Ini bikin sistem BioMac user-friendly, penting buat tim di lapangan yang sering input data cepet-cepet. ðââïļ
Cara Import Modul: Kode ini cuma butuh Python standar, jadi ga perlu instal library tambahan. Jalankan di terminal dengan python nama_file.py
. ð
try: donasi = int(input("Masukkan jumlah donasi (Rp): ")) if donasi < 0: raise ValueError("Donasi tidak boleh negatif!") print(f"Donasi Rp {donasi} berhasil dicatat! ð") except ValueError as e: print(f"Error: {e}. Masukkan angka yang valid! ðĻ")
Masukkan jumlah donasi (Rp): -500000 Error: Donasi tidak boleh negatif!. Masukkan angka yang valid! ðĻ
Penjelasan Output Detail: Outputnya nunjukin pesan error: "Error: Donasi tidak boleh negatif!. Masukkan angka yang valid! ðĻ" karena user masukin -500000. Kode cek pake if donasi < 0
dan lempar ValueError
dengan pesan spesifik. Pesan error ditangkap di blok except
dan ditampilin bareng instruksi buat masukin angka valid. Kalo user masukin huruf (misalnya "abc"), errornya bakal bilang "Error: invalid literal for int() with base 10: 'abc'. Masukkan angka yang valid! ðĻ". Sistem ini bikin program ga crash dan kasih feedback jelas ke tim BioMac, kayak nyanyi lagu dengan nada yang pas meski ada kesalahan! ðĪ
Penjelasan Query: Kode ini pake try-except
dari Chapter 11 untuk nangani dua jenis error: ValueError
kalo input bukan angka (misalnya huruf) dan ValueError
kalo donasi negatif (dicek manual pake if
). Kita minta input donasi pake input()
, ubah ke integer pake int()
, dan cek apakah negatif. Kalo semua beres, kita cetak pesan sukses dengan emoji biar semangat! ð Kalo ada error, kita tangkap dan kasih pesan jelas. Struktur ini bikin sistem user-friendly buat tim BioMac yang sering input data di lapangan, dan sesuai kebutuhan Mas Azmi buat sistem yang ga gampang crash. Tema donasi relevan sama isu sosial ekonomi, dan error handling bikin kode robust, kayak nyanyi lagu dengan nada yang selalu pas! ðķð
Penjelasan Logic Query: Logika di sini kayak bikin jaring pengaman buat tim BioMac. Kita pake try-except
untuk nangkep dua kemungkinan error: input bukan angka (misalnya huruf) dan donasi negatif. Pertama, input()
minta data dari user, trus int()
coba ubah ke integer. Kalo gagal (misalnya user masukin "abc"), ValueError
otomatis muncul dan ditangkap oleh except
. Kedua, kalo input berhasil jadi angka, kita cek pake if donasi < 0
. Kalo negatif, kita lempar ValueError
manual dengan pesan spesifik. Pesan error dari kedua kasus ditangkap oleh except ValueError as e
dan ditampilkan pake print(f"Error: {e}...")
biar user tau apa yang salah dan apa yang harus dilakukan (masukin angka valid). Kalo input beres, kita kasih pesan sukses biar tim semangat. Struktur ini bikin sistem tangguh, kayak nyanyi lagu dengan jaring pengaman biar ga fals! ðĩðŠ
Do and Don'ts:
ValueError
) biar tau apa yang salah. â
except
kosong tanpa spesifikasi, nanti susah debug. âtry-except
, nanti crash. ðĻ"Error itu bukan musuh, bro. Tangani dengan cerdas, dan program kamu bakal jadi tank! ðŠðĨ"
Mas Azmi: "Mas Arry, kami butuh nyimpen data kegiatan tanam pohon sama daur ulang ke file JSON biar bisa dianalisis nanti. Tapi kami cuma punya laptop sederhana, bisa simulasi dulu? ðĪð "
Mas Arry: "No prob, Mas Azmi! ð Kita bikin simulasi file handling (Chapter 12) pake JSON (Chapter 19), kayak nyanyi lagu tapi simpen nadanya dalam format digital. Nanti di VSCode kamu bisa beneran nyimpen file! ðūâĻ"
Konsep File Handling dan JSON (Chapter 12, 19): File handling (Chapter 12) biasanya pake open()
untuk baca/tulis file, tapi karena kita di Pyodide (ga support I/O lokal), kita simulasi pake string output. JSON (Chapter 19) bikin data terstruktur dan portabel, cocok buat nyimpen data kegiatan BioMac. Simulasi ini bikin tim bisa lihat format data sebelum implementasi nyata di VSCode. ð
Cara Import Modul: Kode ini butuh modul json
yang sudah ada di Python standar. Jalankan dengan python nama_file.py
. ð
import json # Simulasi file kegiatan.json kegiatan = [ {"acara": "Tanam Pohon", "pohon": 10, "lokasi": "Pantai"}, {"acara": "Daur Ulang", "sampah_kg": 20, "lokasi": "Muara"} ] # Simulasi menulis ke file print("Simulasi isi file kegiatan.json:") print(json.dumps(kegiatan, indent=2)) # Simulasi membaca file print("\nSimulasi baca file kegiatan.json:") data = json.loads(json.dumps(kegiatan)) for item in data: print(f"Acara: {item['acara']}, Lokasi: {item['lokasi']}")
Simulasi isi file kegiatan.json: [ { "acara": "Tanam Pohon", "pohon": 10, "lokasi": "Pantai" }, { "acara": "Daur Ulang", "sampah_kg": 20, "lokasi": "Muara" } ] Simulasi baca file kegiatan.json: Acara: Tanam Pohon, Lokasi: Pantai Acara: Daur Ulang, Lokasi: Muara
Penjelasan Output Detail: Outputnya dibagi dua bagian:
1. Simulasi tulis: Nampilin JSON rapi dengan dua dictionary dalam list, satu buat kegiatan Tanam Pohon (10 pohon di Pantai), satu buat Daur Ulang (20 kg sampah di Muara). Ini simulasi isi file kegiatan.json
kalo kita beneran nulis pake json.dump()
.
2. Simulasi baca: Nampilin data yang "dibaca" dari JSON, tapi karena simulasi, kita pake json.loads()
dari string JSON. Outputnya dua baris: Tanam Pohon di Pantai dan Daur Ulang di Muara, diambil dari kunci acara
dan lokasi
. Loop for
bikin data gampang dibaca tim BioMac, kayak buka playlist dan lihat judul lagu! ðķ
Penjelasan Query: Kode ini simulasi file handling (Chapter 12) pake JSON (Chapter 19). Kita bikin list kegiatan
dengan dua dictionary: satu buat tanam pohon, satu buat daur ulang. Simulasi nulis ke file pake json.dumps(kegiatan, indent=2)
biar rapi, dan simulasi baca file pake json.loads()
untuk ubah JSON jadi data Python. Loop for
nampilin data yang relevan (acara dan lokasi) biar gampang dibaca tim BioMac. Struktur ini bikin data kegiatan terstruktur dan portabel, cocok buat kebutuhan Mas Azmi buat nyimpen laporan kegiatan yang bisa dianalisis nanti. Tema kegiatan relevan sama isu lingkungan, dan simulasi ini bikin kode fleksibel buat diimplementasi beneran di VSCode. Gampang diinget, kayak nyanyi lagu dan simpen nadanya di playlist digital! ðĩð
Penjelasan Logic Query: Logika di sini kayak bikin draf digital sebelum nyanyi lagu di panggung. Kita simulasi file handling soalnya Pyodide ga bisa I/O lokal, tapi logikanya sama kayak nyata. Pertama, kita bikin list kegiatan
dengan dua dictionary, soalnya list fleksibel buat nyimpen banyak data kegiatan, dan dictionary bikin data terstruktur (key-value pair kayak "pohon": 10). Untuk simulasi nulis, kita pake json.dumps(kegiatan, indent=2)
untuk ubah list ke string JSON yang rapi, kayak nulis draf laporan dalam format universal. Untuk simulasi baca, kita pake json.loads(json.dumps(kegiatan))
untuk ubah string JSON kembali ke data Python, seolah-olah kita baca dari file. Loop for
nampilin kunci acara
dan lokasi
biar outputnya simpel dan relevan buat tim BioMac. Struktur ini bikin data gampang dianalisis, kayak nyanyi lagu dengan lirik yang udah tersusun rapi di playlist! ð§ðū
Do and Don'ts:
indent
di JSON biar gampang dibaca tim. â
"Data yang rapi itu kayak playlist yang enak didenger. Simpen dengan cerdas, bro! ð§ð"
Mas Azmi: "Mas Arry, data konservasi kami banyak banget: pohon, donasi, lokasi. Bisa bikin sistem yang terstruktur biar ga pusing ngatur? ðð"
Mas Arry: "Beres, Mas Azmi! ð Kita pake OOP (Chapter 13-14) buat bikin kelas-kelas yang bikin data kamu kayak rak penyimpanan aesthetic. Semua rapi dan gampang diakses! ðŠīâĻ"
Konsep OOP (Chapter 13-14): OOP bikin data terstruktur pake kelas dan objek, kayak bikin blueprint untuk ngelola data kompleks. Kita bikin kelas untuk ngelola data konservasi BioMac, bikin sistem scalable dan gampang dimengerti tim, kayak nyusun rak penyimpanan yang aesthetic! ðïļ
Cara Import Modul: Kode ini cuma butuh Python standar. Jalankan dengan python nama_file.py
. ð
class KonservasiMangrove: def __init__(self, acara, donasi, pohon, lokasi): self.acara = acara self.donasi = donasi self.pohon = pohon self.lokasi = lokasi def info(self): return (f"Acara: {self.acara}, Donasi: Rp {self.donasi}, " f"{self.pohon} pohon di {self.lokasi}") kegiatan = [ KonservasiMangrove("Tanam Pohon 1", 500000, 10, "Pantai"), KonservasiMangrove("Tanam Pohon 2", 300000, 5, "Muara") ] for k in kegiatan: print(k.info())
Acara: Tanam Pohon 1, Donasi: Rp 500000, 10 pohon di Pantai Acara: Tanam Pohon 2, Donasi: Rp 300000, 5 pohon di Muara
Penjelasan Output Detail: Outputnya nunjukin dua baris yang ngegambarin dua kegiatan konservasi. Baris pertama bilang ada acara Tanam Pohon 1 dengan donasi Rp 500000, 10 pohon, di Pantai. Baris kedua bilang Tanam Pohon 2 dengan donasi Rp 300000, 5 pohon, di Muara. Metode info
dari kelas KonservasiMangrove
ngasih string yang ngerangkum semua atribut objek dalam format jelas dan gampang dibaca, kayak buka album dan lihat detail lagu favorit! ðķ
Penjelasan Query: Kode ini pake OOP dari Chapter 13 buat bikin kelas KonservasiMangrove
yang ngelola data acara konservasi. Kelas ini punya atribut acara
, donasi
, pohon
, dan lokasi
, diinisialisasi pake __init__
. Metode info
nge-return string yang ngerangkum semua data biar gampang ditampilin. Kita bikin list kegiatan
yang nyimpen dua objek dari kelas ini, trus loop pake for
untuk nampilin info tiap kegiatan. Struktur ini bikin data konservasi terorganisir dan fleksibel, cocok buat kebutuhan Mas Azmi buat ngatur banyak data. Tema konservasi relevan sama isu lingkungan dan sosial ekonomi (donasi), dan OOP bikin kode scalable, kayak nyusun rak penyimpanan yang bisa ditambah kapan aja! ðŠīð
Penjelasan Logic Query: Logika di sini kayak bikin blueprint rumah untuk tim BioMac. Kelas KonservasiMangrove
kayak cetakan yang nyimpen data acara dalam atribut (acara
, donasi
, dll.) pake self
biar terikat sama objek. Metode __init__
inisialisasi atribut saat objek dibuat, kayak ngisi formulir data acara. Metode info
bikin string rapi pake f-string, gabungin semua atribut jadi satu pesan yang jelas, kayak bikin ringkasan lagu dalam playlist. Kita simpen objek dalam list kegiatan
soalnya list gampang ngatur banyak data, trus loop pake for
untuk nampilin info tiap objek. Struktur ini bikin data gampang diakses dan ditambah, kayak nyanyi lagu dengan playlist yang tersusun rapi dan bisa diperluas! ðĩðïļ
Do and Don'ts:
self
, nanti ga bisa diakses objek. âKonservasiMangrove
, biar jelas. ðself
sebagai parameter pertama. ðĻ"Struktur kode yang rapi itu kayak taman yang terawat. Bikin hidup lebih damai, bro! ðģð"
Mas Azmi: "Mas Arry, kadang tim salah masukin lokasi, misalnya pake angka atau simbol. Bisa bikin validasi biar cuma huruf dan spasi? ð§ð "
Mas Arry: "Gampang, Mas Azmi! ð Kita pake regex (Chapter 16) buat bikin lokasi konsisten, kayak detektif yang cuma nerima clue berkualitas! ðĩïļââïļâĻ"
Konsep Regex (Chapter 16): Regex bikin kita bisa nyari dan validasi pola teks, kayak detektif teks. Kita pake pola untuk pastiin input lokasi cuma huruf dan spasi, bikin data BioMac bersih dan konsisten, kayak nyanyi lagu dengan lirik yang rapi! ðķ
Cara Import Modul: Kode ini butuh modul re
yang sudah ada di Python standar. Jalankan dengan python nama_file.py
. ð
import re lokasi = input("Masukkan lokasi tanam pohon: ") pola = r"^[A-Za-z\s]+$" if re.match(pola, lokasi): print(f"Lokasi '{lokasi}' valid! â ") else: print("Error: Lokasi hanya boleh huruf dan spasi! ðĻ")
Masukkan lokasi tanam pohon: Pantai123 Error: Lokasi hanya boleh huruf dan spasi! ðĻ
Penjelasan Output Detail: Outputnya bilang "Error: Lokasi hanya boleh huruf dan spasi! ðĻ" karena input "Pantai123" ga sesuai pola regex ^[A-Za-z\s]+$
. Pola ini artinya: ^
(mulai string), [A-Za-z\s]
(huruf A-Z, a-z, atau spasi), +
(satu atau lebih karakter), $
(akhir string). Karena ada angka "123", re.match()
nge-return None
, jadi masuk ke blok else
dan nampilin pesan error. Kalo inputnya "Pantai", outputnya bakal "Lokasi 'Pantai' valid! â
". Output ini bikin tim BioMac tau kalo input salah dan apa yang harus diperbaiki, kayak nyanyi lagu dengan lirik yang harus pas! ðĩ
Penjelasan Query: Kode ini pake regex dari Chapter 16 untuk validasi input lokasi. Kita impor re
, minta input lokasi, dan cek pake re.match(pola, lokasi)
dengan pola ^[A-Za-z\s]+$
. Kalo input sesuai (cuma huruf dan spasi), kita kasih pesan sukses dengan emoji biar semangat! â
Kalo ga sesuai, kita kasih pesan error. Struktur ini bikin data lokasi konsisten, penting buat tim BioMac yang butuh data bersih buat laporan. Tema validasi lokasi relevan sama isu lingkungan, dan regex bikin kode efisien dan akurat, kayak detektif yang pilih-pilih clue berkualitas! ðĩïļââïļð
Penjelasan Logic Query: Logika di sini kayak detektif teks yang cuma nerima data berkualitas. Kita pake re.match()
soalnya match cek dari awal string, beda sama re.search()
yang nyari di mana aja. Pola ^[A-Za-z\s]+$
bikin aturan ketat: string harus mulai (^
) dan selesai ($
) dengan satu atau lebih (+
) huruf atau spasi ([A-Za-z\s]
). Kalo ada karakter lain (misalnya angka atau simbol), re.match()
return None
, dan kita masuk ke blok else
untuk kasih pesan error. Kalo cocok, kita kasih pesan sukses. Input dari user diambil pake input()
, dan hasil validasi ditampilkan pake print()
dengan emoji biar user semangat. Struktur ini bikin data lokasi bersih, kayak nyanyi lagu dengan lirik yang selalu pas dan ga ada nada fals! ðķð
Do and Don'ts:
re.match()
untuk cek seluruh string, biar validasi ketat. ð"Data yang bersih itu kayak laut yang jernih. Bikin konservasi mangrove makin kece! ðð"
Mas Azmi: "Mas Arry, kami butuh sistem yang nyatet waktu kegiatan dan cek apakah udah lewat atau belum. Biar tim ga bingung ngatur jadwal! ð ð"
Mas Arry: "Chill, Mas Azmi! ð Kita pake datetime (Chapter 17) buat bikin sistem jadwal yang kece, kayak jam tangan digital yang selalu on time! ââĻ"
Konsep Datetime (Chapter 17): Modul datetime
bikin kita bisa ngelola tanggal dan waktu, kayak penutur waktu. Kita pake untuk nyatet jadwal kegiatan BioMac dan cek apakah udah lewat, bikin tim bisa atur waktu dengan cerdas, kayak nyanyi lagu dengan irama yang tepat! ðķ
Cara Import Modul: Kode ini butuh modul datetime
yang sudah ada di Python standar. Jalankan dengan python nama_file.py
. ð
from datetime import datetime tanggal = input("Masukkan tanggal acara (dd-mm-yyyy): ") try: tanggal_acara = datetime.strptime(tanggal, "%d-%m-%Y") if tanggal_acara < datetime.now(): print("Acara sudah lewat! ð°ïļ") else: selisih = (tanggal_acara - datetime.now()).days print(f"Acara akan berlangsung {selisih} hari lagi! ð") except ValueError: print("Format tanggal salah! Gunakan dd-mm-yyyy. ðĻ")
Masukkan tanggal acara (dd-mm-yyyy): 01-06-2025 Acara akan berlangsung 16 hari lagi! ð
Penjelasan Output Detail: Outputnya bilang "Acara akan berlangsung 16 hari lagi! ð" karena input "01-06-2025" diubah jadi objek datetime
(1 Juni 2025). Dibandingin sama waktu sekarang (16 Mei 2025), selisihnya dihitung pake (tanggal_acara - datetime.now()).days
, ngasih 16 hari (15 hari dari 16-31 Mei, plus 1 hari ke 1 Juni). Kalo input salah (misalnya "2025-06-01"), outputnya "Format tanggal salah! Gunakan dd-mm-yyyy. ðĻ". Sistem ini bikin tim BioMac gampang lacak jadwal, kayak cek playlist kapan lagu diputar! ðķ
Penjelasan Query: Kode ini pake datetime
dari Chapter 17 untuk ngelola jadwal. Kita minta input tanggal, ubah ke objek datetime
pake strptime()
, dan cek apakah udah lewat pake if tanggal_acara < datetime.now()
. Kalo belum lewat, kita hitung selisih hari pake .days
. Try-except
nangani error format tanggal, kasih pesan jelas kalo salah. Struktur ini bikin sistem akurat dan user-friendly, cocok buat Mas Azmi yang butuh jadwal kegiatan jelas. Tema jadwal relevan sama isu lingkungan, dan datetime
bikin kode tepat waktu, kayak nyanyi lagu dengan jam yang selalu on beat! ðĩð
Penjelasan Logic Query: Logika di sini kayak bikin jam digital untuk BioMac. Kita minta input tanggal pake input()
, trus ubah ke objek datetime
pake strptime(tanggal, "%d-%m-%Y")
, yang artinya string harus sesuai format tanggal-bulan-tahun. Kalo format salah (misalnya "2025-06-01"), ValueError
muncul dan ditangkap oleh except
, kasih pesan untuk perbaiki format. Kalo format bener, kita bandingin tanggal_acara
sama datetime.now()
pake <
. Kalo tanggal_acara
lebih kecil, acara udah lewat, jadi kasih pesan. Kalo lebih besar, hitung selisih pake tanggal_acara - datetime.now()
, ambil hari pake .days
, dan kasih pesan dengan selisih. Struktur ini bikin jadwal akurat, kayak nyanyi lagu dengan irama yang selalu tepat waktu! â°ðķ
Do and Don'ts:
try-except
buat tangani format tanggal salah. âtimedelta
biar akurat. ð"Waktu itu emas, bro. Kelola jadwal dengan cerdas, biar konservasi mangrove on track! â°ð"
Mas Azmi: "Mas Arry, kami butuh laporan kegiatan yang rapi, nyatet setiap langkah, dan disimpen dalam JSON. Biar tim bisa analisis dan lapor ke donatur! ðð"
Mas Arry: "Beres, Mas Azmi! ð Kita gabungin logging (Chapter 18) sama JSON (Chapter 19) buat bikin laporan yang kece, kayak buku harian digital yang bikin donatur kagum! ðâĻ"
Konsep Logging dan JSON (Chapter 18, 19): Logging nyatet aktivitas program kayak buku harian, bikin jejak jelas untuk debugging dan laporan. JSON nyimpen data terstruktur, gampang dianalisis. Kita gabungin keduanya untuk bikin laporan kegiatan BioMac yang transparan dan portabel, kayak nyanyi lagu sambil simpen lirik dalam format digital! ðķ
Cara Import Modul: Kode ini butuh modul json
, logging
, dan datetime
yang sudah ada di Python standar. Jalankan dengan python nama_file.py
. ð
import json import logging from datetime import datetime logging.basicConfig( level=logging.INFO, format="%(asctime)s - %(name)s - %(levelname)s - %(message)s" ) logger = logging.getLogger("BioMac") data = [] for i in range(2): try: acara = input(f"Masukkan nama acara ke-{i+1}: ") donasi = int(input(f"Masukkan donasi (Rp): ")) pohon = int(input(f"Masukkan jumlah pohon: ")) rencana = { "acara": acara, "donasi": donasi, "pohon": pohon, "waktu": datetime.now().strftime("%d-%m-%Y %H:%M:%S") } data.append(rencana) logger.info(f"Acara {acara} ditambahkan â ") except ValueError: logger.error("Error: Input donasi/pohon harus angka! ðĻ") i = i - 1 logger.info(f"Laporan kegiatan:\n{json.dumps(data, indent=2)}")
2025-05-16 07:59:00,123 - BioMac - INFO - Acara Acara 1 ditambahkan â 2025-05-16 07:59:00,124 - BioMac - INFO - Acara Acara 2 ditambahkan â 2025-05-16 07:59:00,125 - BioMac - INFO - Laporan kegiatan: [ { "acara": "Acara 1", "donasi": 500000, "pohon": 10, "waktu": "16-05-2025 07:59:00" }, { "acara": "Acara 2", "donasi": 300000, "pohon": 5, "waktu": "16-05-2025 07:59:00" } ]
Penjelasan Output Detail: Outputnya punya tiga bagian:
1. Log penambahan acara: Dua baris log INFO nunjukin "Acara Acara 1 ditambahkan â
" dan "Acara Acara 2 ditambahkan â
", lengkap dengan timestamp (16 Mei 2025, 07:59:00). Ini dicatet pas tiap acara sukses ditambah ke list data
.
2. Log laporan: Log terakhir nampilin JSON rapi dengan dua dictionary dalam list, nyimpen data acara, donasi, pohon, dan waktu. JSON pake indent=2
biar gampang dibaca.
3. Error handling: Kalo user masukin donasi atau pohon salah (misalnya huruf), log ERROR bilang "Error: Input donasi/pohon harus angka! ðĻ" dan minta input ulang. Output ini bikin laporan BioMac transparan, kayak buka playlist dan lihat detail lagu dengan cap waktu! ðķ
Penjelasan Query: Kode ini gabungin logging (Chapter 18), JSON (Chapter 19), dan datetime (Chapter 17) buat bikin laporan kegiatan. Kita set logging dengan format kustom biar ada timestamp, nama logger (BioMac), level, dan pesan. Loop for
minta input dua acara, simpen data ke list data
sebagai dictionary dengan acara
, donasi
, pohon
, dan waktu
(pake datetime.now()
). Try-except
nangani error input, dan logger nyatet setiap langkah: penambahan acara, error, dan laporan akhir dalam JSON. Struktur ini bikin laporan terdokumentasi dan terstruktur, cocok buat Mas Azmi yang butuh laporan buat donatur. Tema laporan relevan sama isu lingkungan dan sosial ekonomi, dan logging bikin kode transparan, kayak nyanyi lagu dan simpen nadanya di buku harian digital! ðð
Penjelasan Logic Query: Logika di sini kayak bikin buku harian digital untuk BioMac. Kita set logging pake logging.basicConfig
dengan format kustom biar setiap catatan punya timestamp, nama logger, level, dan pesan, kayak cap waktu di buku harian. Loop for i in range(2)
minta input dua acara, dengan try-except
untuk nangani error input (misalnya donasi bukan angka). Tiap input valid disimpen ke list data
sebagai dictionary, termasuk waktu dari datetime.now()
yang diformat pake strftime()
. Logger catat tiap langkah: logger.info
saat acara ditambah, logger.error
kalo ada error, dan logger.info
untuk laporan JSON akhir. JSON dibuat pake json.dumps(data, indent=2)
biar rapi dan gampang dianalisis. Struktur ini bikin laporan transparan dan portabel, kayak nyanyi lagu dengan lirik yang tersusun rapi dan dicatat dengan waktu! ððķ
Do and Don'ts:
try-except
buat input user, kalo ga program bisa crash. ðĻ"Laporan yang rapi itu kayak cerita sukses konservasi. Catat dengan cinta, bro! ðð"
Proyek Biodiversity Mangrove Conservation ini bukan cuma kode, tapi solusi nyata buat tim BioMac:
Dengan proyek ini, BioMac bisa fokus ke aksi nyata di lapangan, sementara data dan laporan diurus sistem yang kece. Indonesia bakal makin hijau, dan komunitas lokal makin sejahtera! ðð
Yo, bro, proyek ini adalah bukti bahwa teknologi bisa bikin dunia lebih baik! ð Bersama Mas Azmi, Mas Arry Hutomo, dan ECC Team, kita udah bikin sistem yang nggak cuma bantu konservasi mangrove, tapi juga ngajarin kita buat kreatif, terstruktur, dan peduli sama lingkungan. Terus semangat belajar Python, dan bikin solusi yang bikin bumi tersenyum! ðð