"""Educational monthly cost model. Values below are fictional, not live prices."""

def compare(tasks=10000, input_tokens=2000, output_tokens=500,
            input_price=1, output_price=4, hardware=1200, months=24,
            electricity=0, maintenance=0, cloud_review=0, local_review=0):
    values = [tasks, input_tokens, output_tokens, input_price, output_price, hardware,
              electricity, maintenance, cloud_review, local_review]
    if months <= 0 or any(v < 0 for v in values):
        raise ValueError('Costs and volumes must be nonnegative; months must be positive.')
    cloud = tasks * (input_tokens * input_price + output_tokens * output_price) / 1_000_000 + cloud_review
    local = hardware / months + electricity + maintenance + local_review
    return {'cloud': cloud, 'local': local}

if __name__ == '__main__':
    for name, value in compare().items():
        print(f'{name}: ${value:.2f}/month (fictional inputs; edit parameters for your scenario)')
