Python Brainteaser: Formatting Numbers with Commas

Often, you will want to format your numbers in Python because it’s quite hard for a user to read 10000000000 and immediately understand it as: 10,000,000,000. So, this little article will show you one possible way to do the formatting – using many of the Python concepts discussed in previous articles and in my Udemy course.

In the below, I have defined a function called format number. It takes in a single argument which is the original number from the user. It converts that number to a string & then converts it to a list.

We then calculate how many commas we need in our number by taking the length of the number and dividing it by 3 (becuase we put a comma every 3 numbers).

We then break out into a while loop & say ‘while there is still a comma to insert, keep going’. Inside the loop, we jump back 3 spaces and put a comma in that index of the list. We only do that if the index is not longer than the list, so we avoid having a comma right at the beginning of the number.

We then convert back to a string and we are done!

def format_number(number):
    x = list(str(number))
    length = len(x)
    commas = int(length/3)
    index = 0
    attempt = 1
    while commas >0:
        if attempt == 1:
            index = index-3
            index = index-4
        commas = commas -1
        if abs(index) != len(x):
            x.insert(index, ',')
        attempt = attempt + 1
    x = ''.join(x)