题目
内容:检测传入大小写字母的字符串,按照如下规则输出:第1个字符输出1次,第二个字母输出2次,依次往后,另外每个首字母大写,其他小写
链接:https://www.codewars.com/kata/5667e8f4e3f572a8f2000039/train/python
截图:
解题
思路:
1、首先需对传入的字符串进行逐个单词分隔成列表,使用list()函数。
2、对得到的列表中字母按照1、2、3的次数叠加相同的字母,使用str*i(次数)。
3、此时得到的字符串大小写情况不确定,使用title()函数将首字母转换成大写,其他字母转换成小写。
4、定义1个结果字符串将每轮得到的字符串+分隔符‘-’拼接起来。
5、由于上述得到的结果结尾处多1个'-',使用strip('-')指定删除首尾的'-',得出最终的结果。
结果:
源码:
def accum(s): """ 检测传入大小写字母的字符串,按照如下规则输出 accum("abcd") -> "A-Bb-Ccc-Dddd" accum("RqaEzty") -> "R-Qq-Aaa-Eeee-Zzzzz-Tttttt-Yyyyyyy" accum("cwAt") -> "C-Ww-Aaa-Tttt" :param s: 传入字符串、只包含大小写 :return: 输出字符串,按照第1个字符输出1次,第二个字母输出2次,依次往后,另外每个首字母大写,其他小写 """ s=list(s) #将传入字符串转换成列表 result='' #定义空字符串用于存储最后的结果 print(s) j=0 for i in s: j += 1 #每次循环j+1,用于得到每次循环时生成的字母重复次数 i=i*j #生成重复的字母 i=i.title() #使用title()函数将首字母转换成大写,其他字母转换成小写 print(i) result=result+i+'-' #将每轮生成的字符串拼接在result字符串中,以及拼接上'-',此时最后一位多个1个'-' pass print(result) result=result.strip('-') #使用strip()方法去除首尾的'-',由于前面没有'-',最终只删除了最后1位的'-' print(result) return result
知识点
1、strip()函数用于字符串头部和尾部的指定字符串,默认为空格或换行符,但可以指定字符串,如本次用到的strip('-')。
2、list()函数可以将字符串转换成列表。
3、字符串的拼接可以使用str1+str2号,也可以使用str*次数,来快速获取相同的字符串。(另外,PS:append函数用于在列表末尾添加新的对象。)
参考资料:
https://www.runoob.com/python3/python3-upper-lower.html
https://www.cnblogs.com/xiaoleiel/p/8301402.html
https://blog.csdn.net/runner668/article/details/81067458