Laporan Otomatis · Pelajaran 7 dari 8
Membuat laporan otomatis
9 menit baca · BelajarCode
Setelah data diolah, langkah terakhir adalah menyajikannya. Laporan yang konsisten setiap bulan lebih mudah dibaca atasan dan rekan kerja, dan program bisa membuatnya dalam sekejap.
Format angka rupiah
1def rupiah(angka):2 return "Rp" + f"{angka:,.0f}".replace(",", ".")34for nilai in [5000, 1250000, 987654321.6]:5 print(rupiah(nilai))Rp5.000 Rp1.250.000 Rp987.654.322
Tabel dengan kolom rata
1data = [("Kopi susu", 27, 405000), ("Roti bakar", 12, 216000),2 ("Teh tarik", 8, 96000), ("Mi goreng", 4, 80000)]34def rupiah(angka):5 return "Rp" + f"{angka:,.0f}".replace(",", ".")67total_omzet = sum(o for _, _, o in data)8garis = "-" * 429print(f"{'Produk':<14}{'Porsi':>8}{'Omzet':>12}{'Bagian':>8}")10print(garis)11for produk, porsi, omzet in data:12 print(f"{produk:<14}{porsi:>8}{rupiah(omzet):>12}{omzet / total_omzet:>8.1%}")13print(garis)14print(f"{'Total':<14}{sum(p for _, p, _ in data):>8}{rupiah(total_omzet):>12}")Produk Porsi Omzet Bagian ------------------------------------------ Kopi susu 27 Rp405.000 50.8% Roti bakar 12 Rp216.000 27.1% Teh tarik 8 Rp96.000 12.0% Mi goreng 4 Rp80.000 10.0% ------------------------------------------ Total 51 Rp797.000
<14rata kiri selebar 14 karakter,>8rata kanan selebar 8..1%mengubah pecahan menjadi persen dengan satu desimal. Kolom Bagian menunjukkan porsi setiap produk dari total omzet.
Templat laporan
Untuk laporan yang isinya selalu sama kecuali angka-angkanya, tulis templat sekali lalu isi dengan data.
1TEMPLAT = """Yth. {penerima},23Berikut ringkasan penjualan {periode}:4- Total omzet: {omzet}5- Produk terlaris: {terlaris} ({porsi} porsi)6- Dibanding periode sebelumnya: {perubahan}78Salam,9{pengirim}"""1011def rupiah(angka):12 return "Rp" + f"{angka:,.0f}".replace(",", ".")1314omzet_lalu, omzet_ini = 720000, 79700015perubahan = (omzet_ini - omzet_lalu) / omzet_lalu16print(TEMPLAT.format(17 penerima="Ibu Ratna",18 periode="minggu pertama September 2026",19 omzet=rupiah(omzet_ini),20 terlaris="Kopi susu",21 porsi=27,22 perubahan=f"{'naik' if perubahan >= 0 else 'turun'} {abs(perubahan):.1%}",23 pengirim="Tim Kedai",24))Yth. Ibu Ratna, Berikut ringkasan penjualan minggu pertama September 2026: - Total omzet: Rp797.000 - Produk terlaris: Kopi susu (27 porsi) - Dibanding periode sebelumnya: naik 10.7% Salam, Tim Kedai
format mengganti setiap {nama} di templat dengan nilai yang diberikan.
Cek pemahaman
Apa hasil f"{0.256:.1%}"?
Latihan
Laporan absensi
Dari data absensi {"Andi": 20, "Bela": 18, "Citra": 22, "Dimas": 15} (jumlah hari hadir dari 22 hari kerja), buat laporan berisi nama, hari hadir, persentase kehadiran, dan keterangan "perlu dipantau" jika di bawah 80%.
Pembahasan
1hadir = {"Andi": 20, "Bela": 18, "Citra": 22, "Dimas": 15}2hari_kerja = 223print(f"{'Nama':<8}{'Hadir':>6}{'Persen':>8} Keterangan")4for nama, h in hadir.items():5 persen = h / hari_kerja6 ket = "perlu dipantau" if persen < 0.8 else "-"7 print(f"{nama:<8}{h:>6}{persen:>8.0%} {ket}")Nama Hadir Persen Keterangan Andi 20 91% - Bela 18 82% - Citra 22 100% - Dimas 15 68% perlu dipantau
Jalankan contoh kode di pelajaran ini tanpa instalasi lewat compiler Python online.