0

一致する要素を探して 2 つの文字列を検索しようとしています。文字列に異なる位置にある 2 つの共通要素がある場合、「推測」文字列のその要素を COW にしたいと考えています。文字列の同じ位置に 2 つの要素がある場合、その要素は BULL です。

ここに私が持っているものがあります:

        if index(number,i) in guess and not index(guess,i) == index(guess,i):
            replace(index(guess,i),'COW')

        if index(guess,i) == index(number,i):
            replace(index(guess,i),'BULL')

インデックスを正しく使用しているかどうかはわかりません。

4

2 に答える 2

0

私ならそのindex()方法は使いません。代わりに、文字列の要素をリストに変換してから、次のように言います。

listOne = [hello,goodbye,adios, shalom]
listTwo = [hello,adios,arrivaderci]

def cowbull(L1, L2):
    for i in range(len(L1)):
        if L1[i] in L2:
            if L1[i] == L2[i]:
                L1[i] = 'BULL'
                L2[i] = 'BULL'
            else:
                L1[i] = 'COW'
                L2[L1[i]] = 'COW'

これはまさに私が行う方法ですが、あなたとウィリアムのコードを使用してもうまくいくかもしれません。私はこの方法に慣れているだけで、彼ほど効率的ではないかもしれませんが、通常は非常にうまく機能します.

于 2013-02-21T20:50:28.343 に答える
0

まず、Martijn がコメントで述べたように、文字列メソッドとしてindex()andを使用する必要があります。replace()

これは次のようになります:文字列内のguess.index(i)のインデックスを検索します。iguess

部分文字列が見つからない場合、同じことを行いますが、例外を発生させないfind()をチェックアウトすることをお勧めします。index()

index()また、 の結果がstring にあるかどうかが表示されていることに注意してくださいguess。整数を文字列に入れることはできないため、これはエラーです。 index()整数を返します!

次に、もちろんそれらは等しいので、意味をなさない... and not guess.index(i) == guess.index(i):(私はコードを修正しました)と述べていると考えてください!indexそれらは同じものです!

最後に、使い方がreplace間違っています。ドキュメントから、replace最初の引数として文字列を取ります - インデックスではありません! 次のように使用してみてくださいguess = guess.replace(i, 'BULL')。これは、出現するすべての文字列が文字列に置き換えられるように変更guessされます。i'BULL'

ここでは実際のアルゴリズムには関心がありませんでしたが、基本的なエラーだけに関心がありました。

于 2013-02-21T20:44:12.380 に答える