Pythonで再帰により文字列を反転させたい


アルゴリズムの学習をしていて、Pythonで文字列 `string` を反転させるメソッド `reverse` を作りたいです。

基本的な構文が分からず以下のコードでエラーが出てしまいます。正しいコードはどのように記述すればいいでしょうか？

**エラーメッセージ:**

[code]

    TypeError: 'str' object does not support item assignment
    
[/code]

**現状のコード:**

[code]

    def reverse(string, left, right):
        if left >= right: return
        t = string[left]
        string[left] = string[right] #Error
        string[right] = t #Error
        reverse(string, left + 1, right - 1)
    
[/code]




@payaneco さんの指摘に加えて、関数に戻り値を返す処理が記述されていないので、結果の確認やそれを次の何かに繋げることが出来ない状態です。

両方併せて対処するとすれば以下のようになるでしょう。

[code]

    def reverse(string, left, right):
        if left >= right: return string  #### 反転終了時の戻り値(string)を指定
        work = list(string) #### 以下は @payaneco さん指摘のリスト化して行う処理
        t = work[left]
        work[left] = work[right]
        work[right] = t
        return reverse(''.join(work), left + 1, right - 1)  #### 再帰呼び出しおよびそれ毎の戻り値
    
    result = reverse('abcdefghij', 0, 9)
    print(result)
    
    result2 = reverse('abcdefghij', 3, 6)
    print(result2)
    
[/code]




@payaneco さんの指摘に加えて、関数に戻り値を返す処理が記述されていないので、結果の確認やそれを次の何かに繋げることが出来ない状態です。

両方併せて対処するとすれば以下のようになるでしょう。

[code]

    def reverse(string, left, right):
        if left >= right: return string  #### 反転終了時の戻り値(string)を指定
        work = list(string) #### 以下は @payaneco さん指摘のリスト化して行う処理
        t = work[left]
        work[left] = work[right]
        work[right] = t
        return reverse(''.join(work), left + 1, right - 1)  #### 再帰呼び出しおよびそれ毎の戻り値
    
    result = reverse('abcdefghij', 0, 9)
    print(result)
    
    result2 = reverse('abcdefghij', 3, 6)
    print(result2)
    
[/code]

