1

我在下面有一个功能:

def f(s1,s2):
         s=''
         for i in range(min(len(s1),len(s2))):
            s = s1[i] + s2[i]
         if len(s1) < len(s2): return s + s2[len(s1):]   
         else: return s + s1[len(s2):]
print(f('1234','abc'))

这个函数应该将两个字符串一起打印为 1a2b3c4,但是当我运行它时我只得到后半部分 3c4。关于为什么会发生这种情况的任何想法?谢谢!

4

3 回答 3

4

因为你做的很艰难。

s = ''.join((x + y) for (x, y) in zip(s1, s2))
于 2012-12-11T00:48:32.127 回答
1

你的意思是s +=for循环内部,对吧?

于 2012-12-11T00:52:31.430 回答
1

看起来您正在重新分配变量“s”,而您应该进行连接。

替换:s = s1[i] + s2[i]

与:s = s + s1[i] + s2[i]

于 2012-12-11T00:53:24.687 回答