The challenge
The company you work for has just been awarded a contract to build a payment gateway. In order to help move things along, you have volunteered to create a function that will take a float and return the amount formatting in dollars and cents.
39.99 becomes $39.99
The rest of your team will make sure that the argument is sanitized before being passed to your function although you will need to account for adding trailing zeros if they are missing (though you won’t have to worry about a dangling period).
Examples:
3 needs to become $3.00
3.1 needs to become $3.10
The solution in Python code
Option 1:
def format_money(amount):
return "${:.2f}".format(amount)
Option 2:
def format_money(amount):
return '$%0.2f' % amount
Option 3:
format_money = '${:.2f}'.format
Test cases to validate our solution
def tester328174(sample):
test.it('Testing %s' % sample)
test.assert_equals(format_money(sample), '$%0.2f' % sample, "That's not formatted the way we expected")
test.describe('Fixed tests')
for sample in (39.99, 3, 3.10, 314.16):
tester328174(sample)
test.describe('Random tests')
from random import random
for eiuqoiuwr838 in range(1, 10):
tester328174(int(random() * eiuqoiuwr838 * 100))
for eiuqoiuwr838 in range(1, 19):
tester328174(int(random() * eiuqoiuwr838 * 1000)/10.0)
for eiuqoiuwr838 in range(1, 12):
tester328174(int(random() * eiuqoiuwr838 * 10000)/100.0)