Codewar 日常练习:Format a string of names like ‘Bart, Lisa & Maggie’ (for python)

Codewar 日常练习:Format a string of names like ‘Bart, Lisa & Maggie’ (for python)

题目描述

Format a string of names like ‘Bart, Lisa & Maggie’

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.

示例

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 ''
#Note: all the hashes are pre-validated and will only contain A-Z, a-z, ‘-‘ and ‘.’.

解决方案

solution1

def namelist(names):
    str = ''
    if len(names) != 0:
      arr = []
      for i in range(0, len(names) - 1):
          arr.append(names[i]['name'])
      str = ', '.join(arr)
      str += ' & ' + names[-1]['name'] if str != '' else names[-1]['name']
    return str

solution2

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 ''

solution3

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

solution4

def namelist(names):
    if len(names)==0: return ''
    if len(names)==1: return names[0]['name']
    return ', '.join([n['name'] for n in names[:-1]]) + ' & ' + names[-1]['name']
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值