【问题标题】:Running a loop on every split在每个拆分上运行一个循环
【发布时间】:2020-12-24 21:32:34
【问题描述】:

我正在回答关于 codebattle 的问题,但是我被困在试图完成一个循环。问题是将每个单词的第一个字母移到它的末尾,然后在单词的末尾添加“ay”。保持标点符号不变。前任。 pig_it('Pig latin 很酷') = igPay atinlay siay oolcay.我的基本解决方案是拆分所有单词并在它们上运行一个循环,对每个单词执行操作。但是它只在第一次拆分时运行。

def pig_it(text):
    splits = text.split()
    for split in splits:
        ans = split[1::] + split[0] + "ay"
        return ans

【问题讨论】:

  • 你在循环中有一个return,它会立即退出函数。

标签: python string loops split


【解决方案1】:

这样做:

def piglatin(s):
  new = []
  s = s.split(' ')
  for i in s:
    main = list(i)
    move = main[0]
    main.remove(move)
    main.append(move + 'ay')
    new.append(''.join(main))
  print(' '.join(new))

【讨论】:

  • 这是我需要的
【解决方案2】:
  1. 您需要在循环外声明ans 并继续附加到它。如果你只是在循环中调用它,它每次都会被一个新值替换,你只会得到一个单词。

  2. return 语句不应成为for 循环的一部分。如果你正确缩进它,使它在循环之外,你应该得到想要的输出。

def pig_it(text):
    splits = text.split()
    ans=[]
    for split in splits:
        ans.append(split[1::] + split[0] + "ay")
    return " ".join(ans)

【讨论】:

  • 这只会返回一个单词。
  • @JohnGordon,是的,我的错。我已经编辑了答案并添加了解释。
  • 是的,这就是我要找的。谢谢!
  • @Koedeen,请您将其标记为答案。