def replacest1(string, st1, st2):
return string.replace(st1, st2)
テスト:
replacest1("abcdefdcba", "c", "x")
"abxdefdxba"
テスト:
replacest1("yyyyzzzz", "c", "x")
結果で:
"yyyyzzzz"
それともずっとずっとずっとずっと良い:
"abcdefdcba".replace("c", "x")
での結果10
上記で定義された関数は、質問によって要求される関数と1対1で対応しています。 ではないstring
を識別子として使用することをお勧めします。この種の識別子を使用するには、ではなくを強くお勧めします。
注:そのような関数の定義はstring.replace()
として完全に排除することができるように、問題で使用される静止識別子string
を含有する上記溶液を廃止されつつ、依然として存在します。関数を削除することはできませんでしたが、ここでは別の識別子を使用しますが、独自の関数を定義する必要はありません。
def replaceCharacters(inputString, findChar, replaceChar):
assert isinstance(inputString, str)
assert isinstance(findChar, str)
assert len(findChar) == 1
assert isinstance(replaceChar, str)
assert len(replaceChar) == 1
buffer = ""
for c in inputString:
buffer += replaceChar if c == findChar else c
return buffer
注:ここでは
はstring.replace()
の使用せずにそれを実装する方法の変形である私が使用することを好む、プログラミングエラーを検出するために主張します。パフォーマンスが大きな問題ではない場合、これらのアサーションは問題を引き起こすことはありませんが、誤ってこのような関数を誤って使用することを防ぎます。誤って間違ったパラメータを渡すと、アサーションが失敗し、直ちにフィードバックが返されます。
機能が必要かどうかわかりません。 'foo'、' tok'、 'rep'の3つの文字列が与えられた場合、単に' foo.replace(tok、rep) 'を使うと 'tok'のすべてのインスタンスを' rep'に置き換えて 'foo'を返します。 'foo'に' tok'のインスタンスが* no *含まれていれば、単に元の文字列 'foo'を返します。さらに、私はforループが不要であると思います。割り当ての場合は – jedwards
、st1のすべてのインスタンスをs2に置き換える必要があります。文字列にst1が含まれていない場合は、単に文字列を返します。 – Jason
ところで、 'string'は変数名には適していません。これは標準モジュールの名前です。 –