3 回答

TA贡献1847条经验 获得超7个赞
问题是,当到达像“+”或“-”这样的字符时,您实际上是在返回布尔值,但if in_loop(i)[1] == 'loop starting':仍然在访问。
您必须返回一致的返回类型才能使第二个 for 循环代码工作。例如,查看下面对您的代码的注释:
def in_loop(i):
global loop_started
if i == '[':
loop_started = True
return [True, 'loop starting']
if loop_started:
if i == ']':
loop_started = False
return [True, 'loop over']
return True #This will have side effects and is inconsistent with your other returns of in_loop
return False #This will have side effects and is inconsistent with your other returns of in_loop

TA贡献1880条经验 获得超4个赞
这种情况只有当你输入的东西是不是'['
还是']'
,因为它会到了第二if
的if loop_started:
,并且默认如果内部条件不及格,那就只是return True
,所以这就是为什么它不工作。

TA贡献1794条经验 获得超8个赞
你将 var 初始化loop_started
为什么?(或者换句话说,loop_started
当函数没有被执行时有什么价值?)
如果loop_started
是False
在函数执行之前,则函数将直接返回 False。
一个快速的解决方法是在所有布尔返回语句之后添加一个空字符串。
添加回答
举报