-2

st という文字列内に ch が見つかった場合に文字を変更するプログラムを作成しようとしています。これを '!' に置き換えます。

私はプログラムを書きましたが、何らかの理由でこのコードは 1 文字を置き換えることができません。

「!」の出力が得られません 代わりに「a」を取得しますが、「!」になりたいとは思いません。

私のコードは

st = raw_input("String: ")
ch = raw_input("character: ")


def replace_char(st,ch):
    if st.find(ch):
        new = st.replace(ch,'!')
        print new
        return new
    elif len(st)==len(ch):
        if ch==st:
            print"!"
        else:
            print st
    else:
        print st
        return st

replace_char(st,ch)

私が間違っていることやコードに欠けていることを理解できないのを助けてください

4

2 に答える 2

1

st.find(ch) は、ch が True/False ではなく st にある位置を返します。Python で == True が True の場合、プログラムが機能する場合があるため... :) str == 'a' と ch == 'a' を考えてみましょう。最初の条件は失敗しますが、2 番目の条件は str と ch が同じ場合にのみ機能します長さ。私はあなたのstまたはchに何か他のものがあると思います。私の PC では、次のように st で最初に ch を検索する場合を除いて、あなたのプログラムは動作します: st = 'afsdf' ch = 'a'. より良い解決策は次のようなものです:

st.replace(ch, '!')

すべての場合に機能します。

于 2013-10-18T05:01:26.990 に答える