-1
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)

我的目标是取一个字符串并向后打印字母,每行一个。我遇到了一个 break outside loop 错误。任何人都可以更正我的代码并给出错误原因吗?

4

3 回答 3

5

你误解了这个break说法。

break用于跳出循环:无论是while循环还是for循环。

如果你想打破一个功能,只需使用return. 这是return None. 函数返回某些内容后,它会中断。

if d > 0:
    back_word(m)
    d - 1
else:
    return

另外,不要期望d - 1做任何事情:p。如果要从 中删除 1 d,请使用d -= 1。这相当于d = d - 1.

并且raw_input()已经返回一个字符串,所以不需要这样做str(raw_input(...:)。

最后一件事,您在递归调用函数时忘记对字符串进行切片。如果你不这样做,你会得到一个RuntimeError

if d > 0:
    back_word(m[:-1])
    d -= 1
else:
    return
于 2013-06-30T06:03:05.100 回答
2

break用于提前结束循环。return用于提前结束函数。虽然您正在处理的函数在某种程度上是循环(递归),但该break语句在这种情况下不起作用。你需要这个:

if d>0:
    back_word(m)
    d-1
else:
    return
于 2013-06-30T06:03:32.597 回答
1

我相信你误解了 break 命令。它用于提前结束循环。试试这个:

if d>0:
  back_word(m)
  d-1

else:
  return

祝你好运!

于 2013-06-30T06:13:31.897 回答