Drawer

MBG Budget Converter

MBG Budget Converter - student project

https://pytwiddle.com?source=%23+MBG+Budget+Comparator%0D%0A%23+Berapa+hari+anggaran+MBG+untuk+biaya

MBG_DAILY = 10000 * 3 * 82900000  # Rp 2.487 Triliun/hari

def format_idr(n):
    if n >= 1_000_000_000_000:
        return f"Rp {n / 1_000_000_000_000:.2f} Triliun"
    elif n >= 1_000_000_000:
        return f"Rp {n / 1_000_000_000:.2f} Miliar"
    elif n >= 1_000_000:
        return f"Rp {n / 1_000_000:.2f} Juta"
    else:
        return f"Rp {n:,.0f}"

def parse_number(s):
    s = s.strip()
    if '.' in s and ',' in s:
        if s.rfind('.') > s.rfind(','):
            return float(s.replace(',', ''))
        else:
            return float(s.replace('.', '').replace(',', '.'))
    elif ',' in s:
        parts = s.split(',')
        if len(parts) == 2 and len(parts[1]) <= 2:
            return float(s.replace(',', '.'))
        else:
            return float(s.replace(',', ''))
    elif '.' in s:
        parts = s.split('.')
        if len(parts) == 2 and len(parts[1]) <= 2:
            return float(s)
        else:
            return float(s.replace('.', ''))
    else:
        return float(s)


print("=" * 50)
print("   MBG BUDGET COMPARATOR")
print("=" * 50)
print(f"  MBG Harian : {format_idr(MBG_DAILY)}")
print(f"  (Rp 10.000/porsi x 3x/hari x 82.9 juta siswa)")
print("=" * 50)


while True:
    nama = input("\nNama barang/proyek : ").strip()
    if not nama:
        nama = "Item"

    try:
        harga = parse_number(input("Harga (Rupiah)     : "))
    except ValueError:
        print("  [!] Harga tidak valid, coba lagi.\n")
        continue

    days   = harga / MBG_DAILY
    months = days / 30
    years  = days / 365

    print("\n" + "=" * 50)
    print(f"  {nama}")
    print("=" * 50)
    print(f"  Harga    : {format_idr(harga)}")
    print(f"  MBG Days : {days:.4f} hari")
    print(f"  MBG Month: {months:.4f} bulan")
    print(f"  MBG Year : {years:.6f} tahun")

    if days < 1:
        print(f"\n  Anggaran MBG bisa beli ini {1/days:.1f}x dalam sehari!")
    else:
        meals = int(days * 82900000 * 3)
        print(f"\n  Sama dengan {meals:,} porsi makan pelajar!")

    print("=" * 50)

    lagi = input("\nBandingkan lagi? (y/n) : ").strip().lower()
    if lagi != 'y':
        print("\nSampai jumpa!")
        break