繁体   English   中英

遍历字符串并反转任何包含 5 个或更多字符的单词 - Codewars Kata

[英]Iterate through a string and reverse any word with 5 or more characters - Codewars Kata

def spin_words(sentence):
        words = sentence.split(' ')
        newwords = []
        reverse = []
        for word in words:
                if len(word) < 5:
                        newwords.append(word)
                elif len(word) >= 5:
                        newword = list(word)
                        for letter in newword:
                                reverse.insert(0, letter)
                        newwords.append(''.join(reverse))
        return ' '.join(newwords)

print(spin_words('Welcome'))
print(spin_words('to'))
print(spin_words('CodeWars'))
print(spin_words('Hey fellow warriors'))

为 python 编写 Codewars kata。 需要取一个字符串并反转任何长度为 5 个或更多字符的单词。 此代码适用于单个单词,但一旦超过一个单词是 5 个或更多字符,它将为每个后续单词添加这些单词。 例如:我的“嘿,战士们”以“嘿 wollef sroirrawwollef”的形式出现。 我只是不确定为什么要把不同的词放在一起以及如何解决它。 据我所知,elif 中的 for 循环应该为每个单词关闭。 我知道这应该很简单,只是想了解正在发生的事情和原因。 谢谢!

简单的回答:

你必须清除你的反转词:

def spin_words(sentence):
        words = sentence.split(' ')
        newwords = []
        reverse = []
        for word in words:
                if len(word) < 5:
                        newwords.append(word)
                elif len(word) >= 5:
                        newword = list(word)
                        for letter in newword:
                                reverse.insert(0, letter)
                        newwords.append(''.join(reverse))
                        reverse = [] # Clear the list.
        return ' '.join(newwords)

print(spin_words('Welcome'))
print(spin_words('to'))
print(spin_words('CodeWars'))
print(spin_words('Hey fellow warriors'))

Output:

emocleW
to
sraWedoC
Hey wollef sroirraw

更好的答案:

在 Ignatius Reilly 发表评论后,我的解决方案更加优雅:

def spin_words(sentence):
    words = sentence.split(' ')
    newwords = []
    for word in words:
        if len(word) >= 5:
            word = word[::-1]
        newwords.append(word)
    return ' '.join(newwords)

是我如何颠倒这个词。

Output 相同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM