试图了解循环如何工作,出了什么问题?

时间:2016-11-01 23:37:43

标签: python

问题是:

给定一个字符串,返回一个字符串,对于原始字符中的每个字符,有两个字符。

这是我的尝试:

def double_char(str):
    n = 0
    for x in range(0, len(str)):
        return 2*str[n]
        n = n+1

当我运行它时,它只返回第一个字母的2个版本,并且不能正确循环。所以对于double_char(Hello),它只返回HH。

出了什么问题?在此先感谢您的帮助,对于真正的初学者问题感到抱歉。

4 个答案:

答案 0 :(得分:1)

return 一旦到达就会向调用者返回控件,从而过早地退出for循环。

使用str.join

,这是一种更简单的方法
def double_char(s):
    return ''.join(i*2 for i in s)
>>> s = 'Hello'
>>> double_char(s)
'HHeelllloo'

请勿使用str作为名称,以避免隐藏内置str功能。

答案 1 :(得分:1)

返回导致函数在第一次迭代中返回,因此它只返回第一个字母的2。

你可能打算写的是

def double_char(s):
    n = 0
    r = ''
    for x in range(0, len(s)):
        r += 2*s[n]
        n = n+1

    return r

逐步构建一个字符串,每个字符只有2个。

该功能的更整洁的重构(不使用理解重复其他答案)是

def double_char(s):

    r = ''
    for c in s:
        r += 2*c

    return r

您也不应该使用str作为变量名称。它是内置类型,您可以通过定义名为str的变量来隐藏它。

答案 2 :(得分:1)

这是解决问题的另一种方式。

def double_char(str):
  new_str = ""
  for i in range(len(str)):
    new_str += (str[i]*2)
  return new_str

double_char('Hello')
'HHeelllloo'  

答案 3 :(得分:0)

def double_char(str):

    string = ''
    for i in range(len(str)):
      string += str[i] * 2
      i += 1

    return string