对于家庭作业,我必须创建一个反转字符串的递归函数。这就是我目前所拥有的。最后三行代码由教师完成,我们不允许更改它们。当我运行程序时,没有返回任何内容。我认为反转字符串的代码是正确的,但我正在试图弄清楚如何打印结果。
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)
答案 0 :(得分:3)
您需要打印退货
所以reverse(initial_input)
被分配给返回的值,但如果你想打印它,你需要做`print reverse(initial_input)
因为你不能改变最后三个你应该用函数打印而不是返回它。您的instuctor可能希望您这样做以显示递归
在这里,你试试这个稍微复杂一点,但它在功能中反转:
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)
答案 1 :(得分:2)
听起来你只需要在函数中打印反转的字符串?你的讲师是否提供了输出应该是什么样子的实际例子?
也许您应该定义一个单独的函数来执行相反的操作,并让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)
答案 2 :(得分:1)
根据问题的表述,我假设您的教师不是从文件运行此代码,而是在交互式shell中运行。因此,为了调试,可以在最后一个代码行(调用print
函数)之前添加recursive
运算符,并且不要忘记之后将其删除。
您只需在控制台中运行python
,即可在交互式shell中测试代码。请注意,如果您要立即复制粘贴程序,raw_input()
后的空行将变为initial_input
值。只需复制粘贴到raw_input
的行,然后输入您的字符串,然后调用reverse(initial_input)
。
更简单的方法是致电python -i your_source.py
,然后致电reverse(initial_input)
。这里只考虑reverse(initial_input)
实际上会运行两次(这里不是问题)。
答案 3 :(得分:0)
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 = input()
print(reverse(initial_input))
答案 4 :(得分: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)
它绝对不具备可读性,但它允许您在不改变最后三行的情况下打印出相反的内容。
答案 5 :(得分:0)
您始终可以使用默认值添加第二个参数,以指示是否需要打印结果:
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
答案 6 :(得分:0)
这是另一个递归解决方案:
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
答案 7 :(得分:0)
简单
def rev_str(s):
if len(s)==0:
return ""
sts=s.split(" ")[0]
return "".join(sts[::-1])+ " "+rev_str(s[len(sts)+1:])