1

私はこのコードを持っています

def display(s1,s2):
    l1 = list(s1)
    l2 = list(s2)
    l3 = [None]*10
    for i in range(10):
        for j in range(10):
            if i==l2[j]:
                l3[j] = l1[i]
    return l3

print display('3941068257', '1234567890')

例: list1 の位置 0 に 3。list2 の 9 番目の位置に 0 => l3 と呼ばれる新しいリストの 9 番目の位置に 3 を表示します ....

そのため、プログラムは 9410682573 のように表示することを想定していますが、それでも None none と表示されます ......

私のコンパイラにはデバッガがないので、調べる方法がわかりません。誰でも助けることができますか?

4

1 に答える 1

5

文字列 ( の 1 文字の要素l2) と整数を比較しています。それは常に失敗します。

それは、以下のことが起こるからです。

l2 = ['3','9','4','1','0','6','8','2','5','7']  # when you do "l2 = list(s2)"
for i in [0,1,2,3,4,5,6,7,8,9]:  # when you do "for i in raange(10)"

タイプが一致しないだけです。

代わりにこれを行います:

def display(s1,s2):
    l1 = list(s1)
    l2 = list(s2)
    l3 = [None]*10
    for i in range(10):
        for j in range(10):
            if str(i) == l2[j]:  # <-- change is here
                l3[j] = l1[i]
    return l3

print display('3941068257', '1234567890')
于 2012-05-23T02:13:18.813 に答える