[Tutor] dollarize.py

Jordan Greenberg jordangreenberg at gmail.com
Sun Jun 22 08:09:03 CEST 2008


Martin Walsh wrote:
 > def addcommas(f):
 >   """
 >   This amounts to reversing everything left
 >   of the decimal, grouping by 3s, joining
 >   with commas, reversing and reassembling.
 >   """
 >   # assumes type(f) == float
 >   left, right = ('%0.2f' % f).split('.')
 >   rleft = [left[::-1][i:i+3] for i in range(0, len(left), 3)]
 >   return ','.join(rleft)[::-1] + '.' + right

def addcommas(s): # assumes type(s)==str
     b=[]
     l=len(s)
     for i,v in enumerate(s):
         i+=1 # easier to understand w/ 1-based indexing, i think.
         b.append(v)

         if (l-i)%3==0 and not i==l:
             b.append(',')
     return ''.join(b)


or, somewhat more tersely:


def addcommas2(s):
     l=len(s)
     return ''.join(v+',' if (l-(i+1))%3==0 and not i+1-l==0
                     else v for i,v in enumerate(s))



More information about the Tutor mailing list