a=str(raw_input('Enter the word \n'))
def back_word(m):
b=len(m)
d=b-1
print m[d]
if d>0:
back_word(m)
d-1
else:
break
print back_word(a)
我的目标是取一个字符串并向后打印字母,每行一个。我在循环错误之外得到了休息。任何人都可以更正我的代码并给出错误原因吗?
答案 0 :(得分:5)
你误解了break
声明。
break
用于突破循环:它是while
循环还是for
循环。
如果您想要突破某个功能,只需使用return
即可。这是return None
的缩写。函数返回后,它会中断。
if d > 0:
back_word(m)
d - 1
else:
return
另外,不要指望d - 1
做任何事情:p。如果您要从d
中删除1,请使用d -= 1
。这相当于d = d - 1
。
并且raw_input()
已经返回一个字符串,因此不需要执行str(raw_input(...
:)。
最后一件事,你在递归调用函数时忘了剪切字符串。如果您不这样做,您将获得RuntimeError
:
if d > 0:
back_word(m[:-1])
d -= 1
else:
return
答案 1 :(得分:2)
break
用于提前结束循环。 return
用于提前结束功能。虽然您正在处理的函数是循环(递归),但break
语句在此上下文中不起作用。你需要这个:
if d>0:
back_word(m)
d-1
else:
return
答案 2 :(得分:1)
我相信你误解了break命令。它用于提前结束循环。试试这个:
if d>0:
back_word(m)
d-1
else:
return
祝你好运!