【问题标题】:How to reverse and concatenate strings at certain indexes?如何在某些索引处反转和连接字符串?
【发布时间】:2015-03-28 01:51:15
【问题描述】:

对于我的作业,我需要首先想出一个函数来反转输入的字符串(我已经使用下面的代码完成了)

def reverse(s):
    if len(s) <= 1:
        return s

    return reverse(s[1:]) + s[0]

下一部分是从给定的字符串构造一个新的字符串,方法是在某个索引值处断开它,并将第二部分的反向(后缀)连接到第一部分的开头(前缀)

例如,如果输入字符串是 'laptop' 并且选择的索引值是 3,那么字符串会被分解为 'lap' + 'top'。 'top' 然后将反转为 'pot' 并与前缀(按顺序)连接为 'pot' + 'lap'

这个任务有点令人困惑,因为我是一个新手,除了在 Python 中工作了几天之外几乎没有经验,所以我对要做什么有点困惑。我很确定我必须使用切片和连接运算符,但我不确定我应该如何构建一个符合上述标准的函数。任何指针?

【问题讨论】:

    标签: python string python-3.x concatenation reverse


    【解决方案1】:

    类似:

    def concatreverse(s, i):
        return s[:i] + reverse(s[i:])
    

    【讨论】:

      【解决方案2】:

      你可以这样做:

      s = 'laptop'
      i = 3;
      
      # split the string into two parts
      part1,part2 = s[0:i], s[i:]
      
      # make new string starting with reversed second part.
      s2 = part2[::-1] + part1
      print(s2) 
      # prints: potlap
      

      【讨论】:

      • 这是有道理的。但是我不是必须先定义范围吗?
      • 什么范围?正如我从您的问题中了解到的那样,我按索引进行了拆分。您可以检查索引是否大于字符串的长度。这会很好。
      • 哦,好的。我以为我必须将范围定义为 len(s) 或与之相关的东西。
      • 不需要。 [::-1] 这将反转字符串或任何列表。它是使用 reverse. 函数的替代方法。
      【解决方案3】:

      结合其他两个答案,并实现您的反向功能:

      def concatreverse(s, i):
          """This function takes in a string, s, which
          is split at an index, i, reverses the second of the split,
          and concatenates it back on to the first part"""
      
          #Takes your inputs and processes
          part1,part2 = s[0:i], s[i:]
      
          #Reverse part2 with the function you already created
          #this assumes it is accessible (in the same file, for instance)
          rev_part2 = reverse(part2)
      
          #concatenate the result
          result = part1 +rev_part2
      
          #Give it back to the caller
          return result
      

      作为初学者,它有助于逐行执行,或使用解释器进行测试以查看到底发生了什么:)

      【讨论】:

      • 我在我的新函数中使用了类似的东西。谢谢你的建议!与我的导师相比,解释要简单得多。
      • python 有点便宜,因为你可以在不知道到底发生了什么的情况下走得很远,但如果你正在追求计算机科学,那么可能值得你对他们的解释稍加思考:) 你'再次欢迎您,祝您好运!
      猜你喜欢
      • 2012-12-12
      • 2018-08-23
      • 2021-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-31
      相关资源
      最近更新 更多