-1

「X」のすべてのインスタンスを置換する関数を作成しましたが、開始から停止までの間隔でのみ置換するようにするにはどうすればよいですか?

def replaceSegment(string, replace, start, stop):
    newstring = ''
    for x in string:
        if x == 'X':
            newstring = newstring + replace
        else:
            newstring = newstring + x
    return newstring

文字列 str と別の文字列 replace と 2 つの整数 start と stop を受け取る関数 replaceSegment を作成します。この関数は、インデックス start からインデックス stop を含まない範囲内の元の文字列 str 内の部分文字列 "X" のすべての出現箇所が置換文字列に置き換えられた新しい文字列を返す必要があります。

同じまたは類似のタスクを実行する組み込み関数またはモジュールは、このタスクでは使用されません。ただし、len() 関数を使用することは許可されています。

例:

ReplaceSegment >>> ("HXej! BalXoo X", "hope", 3, 7)
'HXej! Hope balXoo! ')
4

1 に答える 1

0

とを文字列を 3 つの部分に分割するstartと考えてください。stop

  • 最初の部分は文字列の先頭から始まり、 の直前で終わりますstart
  • 2 番目は で始まり、 のstart直前で終わりますstop
  • 3 番目は文字列の末尾から始まりstop、末尾まで続きます。

したがって、変更されるのは 2 番目の部分だけです。

これら 3 つの部分をうまく分離できればnewstring、最初の部分だけから始めて、ループを 2 番目の部分だけに適用し、最後に最後の部分を追加することができます。次のようになります。

def replaceSegment(string, replace, start, stop):
    # before  = the part of string before start
    # segment = the part of string from start to before stop
    # after = the part of the string from stop to the end of string
    newstring = before
    for x in segment:
        if x == 'X':
            newstring = newstring + replace
        else:
            newstring = newstring + x

    newstring += after
    return newstring
于 2013-10-31T12:57:37.410 に答える