MBG Budget Converter

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