【问题标题】:Character repeating in a string字符串中重复的字符
【发布时间】:2014-05-08 15:16:56
【问题描述】:

你能告诉我如何使用python中的for循环重复字符串中的每个字符吗?我的进度是:

def double(str):
    for i in range(len(str)):
        return i * 2

这只会返回重复字符串的第一个字母

【问题讨论】:

  • 它只返回重复的第一个字母的原因是因为return 语句结束了方法执行并返回您想要的任何值(在本例中为i*2)。您要构建输出字符串,然后在循环外建立return(当循环完成时)。
  • 使用 yield 而不是 return 会使其成为生成器,并且在函数上调用 list 将返回所有内容

标签: python string repeat


【解决方案1】:

我相信您想按顺序将输入字符串的每个字符打印两次。您尝试的问题是您使用了return。您只想返回最终字符串,而不仅仅是循环内单个字符的重复。所以你希望你的 return 语句以某种方式在 for 循环之外。

因为这听起来像是一个家庭作业问题,所以在继续下面的操作之前,请尝试找出上面的方法。

还是卡住了?

按顺序打印字符串中的每个字符两次:

def double(str):
    outstr = ''
    for character in str:
        outstr = outstr + char + char
    return outstr

不使用 for 循环:

def double(str):
    return ''.join([c+c for c in str])

【讨论】:

    【解决方案2】:

    一般变体,返回字符串,将原字符串中的每个字符重复n次:

    def multichar(text, n):
        return ''.join([x * n for x in text])
    

    解释

    ''.join(...) - 将 (...) 中的所有内容粘合在一起 没有 个空格,即 ''.join('a', 'b', 'c') 将返回 'abc'

    ' '.join('a', 'b', 'c') 将返回 'a b c'

    '-'.join('a', 'b', 'c') 将返回 'a-b-c'

    ...你明白了:)

    [x * n ...] - 重复x n 次,即'a' * 3 给出'aaa'

    [... for x in text] - 正常 for 循环 - 遍历 text 中的每个元素。

    简单的英语代码的最后一行:

    不带空格地粘贴列表中的每个元素,通过对 text 中的每个 x 重复 x n 次生成。

    示例

    >>> multichar('Hello', 2)
    

    将返回:

    >>> 'HHeelllloo'
    

    【讨论】:

      【解决方案3】:

      给定一个字符串,下面的代码在函数和while循环的帮助下重复字符串中的每个原始字符两次。 res 是一个存储字符串的双倍字符的列表。 " ".join() 被调用来连接列表。 可以更改原始字符重复的次数。 这是代码sn-p。

      def paper_doll(text):
      j = len(text)  
      i=0
      res=[]
      while i<j :
      
          res.append(text[i]*2)
          i = i+1
      result ="".join(res)
      print(result)
      

      paper_doll('paperdoll')

      输出:

      ppaappeerrddoollll
      

      欢迎任何形式的反馈和建议。

      【讨论】:

        【解决方案4】:

        对现有代码的修改最少:

        range(len)) 将迭代索引,而不是实际字符,yield 而不是 return 使其成为生成器,因此允许返回所有值)

        def double(str):
            for i in str:
                yield i * 2
        

        这样使用它:

        str = 'This is a test'
        ''.join(double(str))
        

        【讨论】:

        • 这是一个在线练习,所以我不得不使用 for 循环和 return 语句。另外我还没有研究过产量
        【解决方案5】:
        str = input('Enter string: ')
        char = " "
        for i in char:
            char = char + i + i
        print(char)
        

        【讨论】:

        • 1.添加解释。 2.你想循环str,而不是char
        • 此外,您可能不应该尝试覆盖像 str 这样的内置函数
        猜你喜欢
        • 1970-01-01
        • 2018-07-09
        • 2023-03-15
        • 1970-01-01
        • 2010-09-12
        • 2017-02-15
        • 2011-10-10
        相关资源
        最近更新 更多