初见Python解题之道(四)

Item

超字符限度条件单词反转 输出字符串

Contents

设计一个函数,其中一串字符串中,含有一个或多个英语单词,请将该字符串完整输出,但是,每一个字母数目为5或者以上数目的英语单词,需要将其逆转。
注意:请保持每个单词的顺序一致
题目来源:codewars(6Kyu)

Knowledge

  1. 数据类型:字符串(str)
  2. 运算符:比较运算符、赋值运算符
  3. 容器:列表(List)
  4. 其他:If-elif语句、for循环体等等

Me

  1. 定义函数spin_words(sentence),sentence为源字符串;
  2. 简要思路:分割sentence,判断分割后的各段字符长度,对应条件执行是否反转字符串;
  3. 分割方法:split(),空格为分隔符,分割次数默认即可,有则分割,即-1;
  4. 判断执行条件:>=5则执行该字符串反转,反之不变;
  5. 反转方法:

 - reserve(速度略慢) 
 - 字符串切片[::-1] 
 - for循环 
 - 函数递归 
 - reduce(lambda x,y : y+x, a_string)(要调用模块functools) 
 - 栈
	def rev_string(a_string):
	    l = list(a_string) #模拟全部入栈
	    new_string = ""
	    while len(l)>0:
	        new_string += l.pop() #模拟出栈
	    return new_string
    
  1. 全程以List为中转容器操作,最后输出字符串。

Code

CodeWarn上的方法很多,精简干练,但是对于我这种小白,我就用我想到的方法来解答所遭遇的问题,虽然做不到大佬们的那样简单明了,但是还是有自己的一点逻辑的。

#!\usr\bin\env python
# -*- coding:utf-8 -*-
def spin_words(sentence):
    strTest = sentence
    strSplitList = strTest.split(" ",-1)
    resultList = list()
    for i in strSplitList:
        if len(i) >= 5:
            iList =list(i) 
            iList.reverse()
            i = ''.join(iList)
            resultList.append(i+" ")
        elif len(i) < 5:
            resultList.append(i+" ")
    resultStr = ''.join(resultList)
    return resultStr.strip()
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

顾平安6

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

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

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

打赏作者

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

抵扣说明:

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

余额充值