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'))

この関数は 2 つの文字列を一緒に 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 に答える