递归地反转Python中的字符串

2024-05-17 12:32:14 发布

您现在位置:Python中文网/ 问答频道 /正文

对于家庭作业,我必须创建一个递归函数来反转字符串。这是我目前的情况。最后三行代码是由讲师编写的,我们不允许更改它们。当我运行程序时,不会返回任何内容。我认为反转字符串的代码是正确的,但我正在尝试如何打印结果。

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)

Tags: 字符串代码程序内容inputstringlenreturn
3条回答

基于这个问题的表述,我假设您的老师不会从文件运行这个代码,而是在交互式shell中运行。所以,为了调试,可以在最后一行代码(调用recursive函数)之前添加print运算符,并且不要忘记在之后删除它。

您可以自己在交互式shell中测试代码,只需在控制台中运行python。注意,如果要立即复制粘贴程序,那么raw_input()后面的空行将作为initial_input值。只需将粘贴复制到包含有raw_input的行,输入字符串,然后调用reverse(initial_input)

更简单的方法是调用python -i your_source.py,然后调用reverse(initial_input)。只要考虑一下reverse(initial_input)实际上会运行两次(这在这里不是问题)。

你需要打印报税表

因此reverse(initial_input)被分配给返回值,但是如果您想打印它,您需要执行`反向打印(初始输入)

由于无法更改最后三个,因此应使用函数打印而不是返回它。你的指令可能想让你这样做来显示递归

在这里,你可以试试这个,它有点复杂,但它在函数中是相反的:

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) 

听起来你只需要在函数中打印反转的字符串?你的老师提供了输出应该是什么样子的实际例子吗?

也许您应该定义一个单独的函数来执行相反的操作,并让reverse函数简单地调用这个新函数,然后打印结果。

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

def reverse(input_string):
    print actual_reverse(input_string)

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

reverse(initial_input)

相关问题 更多 >