Skip to content

Latest commit

 

History

History
54 lines (47 loc) · 1.36 KB

codewar-2.md

File metadata and controls

54 lines (47 loc) · 1.36 KB

#Format a string of names like 'Bart, Lisa & Maggie'

codewars里完成的第二题

Description:

Given: an array containing hashes of names

Return: a string formatted as a list of names separated by commas except for the last two names, which should be separated by an ampersand.

Example:

namelist([ {'name': 'Bart'}, {'name': 'Lisa'}, {'name': 'Maggie'} ])
# returns 'Bart, Lisa & Maggie'

namelist([ {'name': 'Bart'}, {'name': 'Lisa'} ])
# returns 'Bart & Lisa'

namelist([ {'name': 'Bart'} ])
# returns 'Bart'

namelist([])
# returns ''

mySolutions

def namelist(names):
    if len(names)==0:
        return ''
    elif len(names)==1:
        return names[0]['name']
    elif len(names)==2:
        return names[0]['name'] + ' & ' + names[1]['name']
    else:
        tmp = names[-2]['name'] + ' & ' + names[-1]['name']
        for i in range(0,len(names)-2)[::-1]:
            tmp = names[i]['name'] + ', ' + tmp
        return tmp

Best practices

def namelist(names):
    if len(names) > 1:
        return '{} & {}'.format(', '.join(name['name'] for name in names[:-1]), 
                                names[-1]['name'])
    elif names:
        return names[0]['name']
    else:
        return ''

Clever

def namelist(names):
  return ", ".join([name["name"] for name in names])[::-1].replace(",", "& ",1)[::-1]