在Python中递归地反转字符串
对于家庭作业,我必须创建一个反转字符串的递归函数。这是我目前拥有的。最后三行代码是由讲师编写的,我们不允许更改它们。当我运行程序时,不会返回任何内容。我认为反转字符串的代码是正确的,但我正在尝试找出如何打印结果在Python中递归地反转字符串,python,string,function,recursion,reverse,Python,String,Function,Recursion,Reverse,对于家庭作业,我必须创建一个反转字符串的递归函数。这是我目前拥有的。最后三行代码是由讲师编写的,我们不允许更改它们。当我运行程序时,不会返回任何内容。我认为反转字符串的代码是正确的,但我正在尝试找出如何打印结果 def reverse(input_string): if len(input_string) == 0: return input_string else: return reverse(input_string[1:]) + inp
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)
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)
你需要打印报税表 因此,
reverse(初始输入)
被分配给返回值,但是如果您想要打印它,您需要执行`打印反向(初始输入)`
由于无法更改最后三个,因此应使用函数打印,而不是返回函数。您的指令可能希望您这样做以显示递归
在这里,你可以试试这个。它有点复杂,但它在函数中是相反的:
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 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 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)
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)
听起来您只需要在函数中打印反转的字符串?您的讲师是否提供了输出应该是什么样子的实际示例 也许您应该定义一个单独的函数来执行反向操作,让
reverse
函数调用这个新函数,并打印结果
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)
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)
除了其他人所说的之外,您还可以从示例代码中执行相同的递归,但反向递归除外。反向操作将允许您在每个字符通过函数时打印它
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)
它肯定不那么可读,但它允许您打印出相反的内容,而无需更改最后三行。除了其他人所说的内容之外,您还可以从示例代码中执行相同的递归,除了相反的内容。反向操作将允许您在每个字符通过函数时打印它
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)
它的可读性肯定不高,但它允许您打印出相反的结果,而无需更改最后三行。您始终可以添加第二个参数,并使用默认值指示是否需要打印结果:
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
您始终可以添加第二个参数,并使用默认值指示是否需要打印结果:
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
根据问题的表述,我假设您的讲师不会从文件中运行此代码,而是在交互式shell中运行。因此,为了便于调试,可以在最后一行代码(调用
递归
函数)之前添加print
操作符,并且不要忘记在之后删除它
您可以自己在交互式shell中测试代码,只需在控制台中运行python
。请注意,如果要立即复制粘贴程序,则raw\u input()
后面的空行将作为initial\u input
值。只需将粘贴复制到包含行的原始输入
,输入字符串,然后调用反向(初始输入)
更简单的方法是调用
python-i your_source.py
,然后调用reverse(初始输入)
。这里只需考虑<代码>反转(RealAlxPin)< /C> >两次(这里不是问题)。 < P>根据问题的提出,我假定您的指导者将不从文件运行这个代码,而是在交互式shell中运行。因此,为了便于调试,可以在最后一行代码(调用递归
函数)之前添加print
操作符,并且不要忘记在之后删除它
您可以自己在交互式shell中测试代码,只需在控制台中运行python
。请注意,如果要立即复制粘贴程序,则raw\u input()
后面的空行将作为initial\u input
值。只需将粘贴复制到包含行的原始输入
,输入字符串,然后调用反向(初始输入)
更简单的方法是调用
python-i your_source.py
,然后调用reverse(初始输入)
。这里只需考虑<代码>反向(RealAlxPin)< /C> >两次运行(这里不是问题)。 < P>这里是另一个递归解决方案:
def reverString(data, i):
if (len(data) + i) == 0:
return data[0]
else:
return data[i] + reverString(data, i-1)
data = 'I am doing great'
print(reverString(data, -1))
控制台的输出:
taerg gniod ma I
这里是另一个递归解决方案:
def reverString(data, i):
if (len(data) + i) == 0:
return data[0]
else:
return data[i] + reverString(data, i-1)
data = 'I am doing great'
print(reverString(data, -1))
控制台的输出:taerg gniod ma I
def rev_str(s):
if len(s)==0:
return ""
sts=s.split(" ")[0]
return "".join(sts[::-1])+ " "+rev_str(s[len(sts)+1:])
简单地
函数的第二行(第一行)也缺少了一个
)
,我把它添加到了我的答案中,当我在这里输入代码时,我在最后一个括号中漏掉了它,所以这并没有给我带来问题。当我尝试在我的函数中打印(用打印替换返回值)时,我得到以下错误:TypeError:不支持+:“NoneType”和“str”的操作数类型。哦,好的,我知道如果你不能更改最后三行,你可能需要采取不同的方法。第二行(第一行)也缺少一个)
函数行我把它添加到我的答案中,当我在这里输入代码时,我在最后一个括号中遗漏了它,所以这并没有给我带来问题。当我尝试在我的函数中打印(用打印替换返回)时,我