![](/img/trans.png)
[英]Solving this kata from codewars ,any tips/fixing ? (new to python)
[英]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.