0

宿題のために、文字列を逆にする再帰関数を作成する必要があります。これが私が現在持っているものです。コードの最後の 3 行はインストラクターによって作成されたものであり、変更することはできません。プログラムを実行すると、何も返されません。文字列を逆にするコードは正しいと思いますが、結果を印刷する方法を見つけようとしています。

def reverse(input_string):
    if len(input_string) == 0:
         return input_string
    else:
         return reverse(input_string[1:]) + input_string[0]

print "Please enter the string you want to reverse: "
initial_input = raw_input()

reverse(initial_input)
4

8 に答える 8

3

返品を印刷する必要があります

soreverse(initial_input)が返された値に割り当てられますが、印刷したい場合は `print reverse(initial_input) を実行する必要があります

最後の 3 つを変更することはできないため、関数を返すのではなく、関数内で出力する必要があります。あなたのインストラクターはおそらく、再帰を示すためにこれを行うことを望んでいたでしょう

ここで、これを試してみてください。もう少し複雑ですが、関数では逆になります。

def reverse(text):
    lst = []
    for i in range(0,len(text)):

        lst.append(text[len(text)-(i+1)])

    lst = ''.join(lst)
    print lst

print "Please enter the string you want to reverse: "
initial_input = raw_input()

reverse(initial_input) 
于 2013-09-23T03:32:32.027 に答える
1

問題の定式化に基づいて、インストラクターはこのコードをファイルからではなく、対話型シェル内で実行すると想定します。したがって、デバッグのためprintに最後のコード行 (recursive関数の呼び出し) の前に自由に演算子を追加し、後で削除することを忘れないでください。

pythonコンソールで実行するだけで、対話型シェルでコードをテストできます。プログラムを一度にコピーして貼り付けると、後の空の行が値にraw_input()なることに注意してくださいinitial_input。の行までをコピーして貼り付けraw_input、文字列を入力してから呼び出しますreverse(initial_input)

もっと簡単な方法はpython -i your_source.py、 と を呼び出すことreverse(initial_input)です。reverse(initial_input)実際には 2 回実行されることを考慮してください (ここでは問題ではありません)。

于 2013-09-23T05:39:40.027 に答える
0

結果を出力する必要があるかどうかを示すデフォルト値を持つ 2 番目のパラメーターをいつでも追加できます。

def reverse(input_string, p=True):
    if len(input_string) == 0:
        return input_string
    r = reverse(input_string[1:], False) + input_string[0]
    if p == True:
        print(r)
    return r

または、改行を印刷する必要がないと仮定すると、一度に文字を印刷することができます:

def reverse(input_string):
    if len(input_string) == 0:
        return input_string
    r = reverse(input_string[1:]) + input_string[0]
    print(input_string[0], end='')  # version 3 print 'print input_string[0],' in version 2.X
    return r
于 2013-09-23T04:22:32.033 に答える
0

他の人が言ったことに加えて、逆を除いて、サンプル コードから同じ再帰を実行できます。逆に実行すると、関数を通過するときに各文字を出力できます。

def reverse(input_string):
    if len(input_string) == 1:
        print input_string[len(input_string) - 1]
        return input_string
    else:
        print input_string[len(input_string) - 1]
        return input_string[len(input_string) - 1] + reverse(input_string[:len(input_string) - 1])

print "Please enter the string you want to reverse: "
initial_input = raw_input()

reverse(initial_input)

決して読みやすいわけではありませんが、最後の 3 行を変更せずに反転して印刷することができます。

于 2013-09-23T04:11:19.933 に答える