【codewars】Mumbling

instruction

This time no story, no theory. The examples below show you how to write function

Examples:
这里写图片描述

my solution

def accum(s):
    # your code
    n = 0
    reStr=""
    for str in s:
        if n!=0:
            reStr = reStr + "-"
        reStr = reStr + str.upper()
        for i in range(n):
            reStr = reStr + str.lower()
        n = n+1
    return reStr

best solution from others

def accum(s):
    return '-'.join((a * i).title() for i, a in enumerate(s, 1))

join方法

用于将序列中的元素以指定的字符连接生成一个新的字符串

str.join(sequence)
sequence – 要连接的元素序列

    c = "abc"
    d = "-".join(c + "efg")
    print(d)

>> a-b-c-e-f-g
    c = ["abc","efg"]
    d = "-".join(c)
    print(d)
    
>> abc-efg
    c = ["abc","efg"]
    d = "-".join(c + "efg")
    print(d)

>>    d = "-".join(c + "efg")
TypeError: can only concatenate list (not "str") to list

enumerate方法

将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中

enumerate(sequence, [start=0])
sequence – 一个序列、迭代器或其他支持迭代对象
start – 下标起始位置

    s = "ABC"
    for i, a in enumerate(s, 1):
        print("i :",i," a:",a)

>> 
i : 1  a: A
i : 2  a: B
i : 3  a: C
    s = ["ABC","DEF"]
    for i, a in enumerate(s, 1):
        print("i :",i," a:",a)

>> 
i : 1  a: ABC
i : 2  a: DEF

title方法

返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写
str.title()

    strs = "abcdef".title()
    print(strs)

>>Abcdef

代码行

‘-’.join((a * i).title() for i, a in enumerate(s, 1))

print([str(i) for i in range(5)])

>> ['0', '1', '2', '3', '4']
    xyz = "-".join([str(i) for i in range(5)])
    print(xyz)

>> 0-1-2-3-4
    s = "abcde"
    k = [(a * i).title() for i, a in enumerate(s, 1)]
    print(k)

>> ['A', 'Bb', 'Ccc', 'Dddd', 'Eeeee']
    s = "abcde"
    k = "-".join([(a * i).title() for i, a in enumerate(s, 1)])
    print(k)

>> A-Bb-Ccc-Dddd-Eeeee
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sysu_lluozh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值