我无法理解这个for循环及其返回的内容

时间:2017-11-15 00:56:45

标签: python for-loop

def double_char(str):
    result = ''
    for char in str:
        result += char + char
    return result

这是函数,当我调用它时,请说:

double_char(dog)

它返回:'ddoogg'

但是在第4行,它说结果=结果+ char + char不会产生''dogdog?我真的很困惑,我想我只是不理解for循环的基础

5 个答案:

答案 0 :(得分:2)

您正在循环遍历字符串中的每个字符。想象一下它只是:

for char in str:
    print char

你去',' o',' g'导致"狗"。现在做两次同样的事情:

for char in str:
    print char
    print char

你要去'' d',' o',' o' ...导致" ddoogg"。你正在做同样的事情,但构建字符串,然后打印它。

答案 1 :(得分:1)

你可以像这样改变你的方法来获得你想要的东西。

%IF &variable=&target %THEN %let target_met=1;

def double_char(str): result = str + str return result 遍历str中的每个字符。第一次是for char in str:,第二次是'd',第三次是'o'。每个都加倍并添加到结果中。换句话说,第一个值只是'g'整体。

'dog'然后在每次迭代后看起来像这样

result

答案 2 :(得分:0)

在python中,当你在像string这样的元素上运行循环时,
你实际上迭代它的角色 这就是为什么在你的例子中你得到每个角色两次 对于' dogdog'使用:result = 2*'dog'

答案 3 :(得分:0)

让我们尝试运行该功能:

def double_char(string):
    result = ''
    for char in string:
        result += char + char
    return result

print(double_char('dog'))

它返回:

ddoogg

所以,这个函数正在做的是定义一个emptry字符串(result)。许多程序都这样做,它们有一个临时的空字符串。然后该字符串被循环(for char in string:)生成的新信息填满。此循环遍历字符串中的每个字符,因此dog。然而,有一个扭曲。此代码为字符串内的每个字符添加两个相同的字符,因此,它在第一次迭代时变为result += 'd' + 'd'。然后result += 'o' + 'o'+=操作符只是将两个字符串压缩在一起,如第一次迭代中的dd和第二次迭代中的oo。从那里,我们得到ddoo。它一直持续到字符串结束。最后,我们使用return语句发送我们创建的新临时字符串result

答案 4 :(得分:0)

正如您所提到的,您传递字符串'dog',暗示str:='dog'

初​​始化, result=''
这会将结果初始化为空字符串一次。

for char in str:

此循环将遍历每个字符。

result += char + char

当你遍历循环时。 char将在每次迭代时分别代表'd','o','g'。

iteration 1:
result=''
char + char := 'd'+'d'

退出迭代:result ='dd'

iteration 2:
result='dd'
char + char := 'o'+'o'

退出迭代:result ='dd'

iteration 3:
result='ddoo'
char + char := 'g'+'g'

退出迭代:result ='ddoogg'

循环完成

如果你想返回'dogdog'

简单地做:

def double_char(str):
    return str+str