Python代码中break语句报错:位于循环外的问题排查求助
解决break语句位于循环外的报错问题
你的代码报错核心原因是:break语句只能用在for或while循环内部,而你写的break处在if-else的else分支里,外面没有任何循环包裹,Python会判定它不合法。另外你用递归调用rep()实现重复操作的方式,多次重复后容易触发栈溢出,改用循环结构会更稳妥。
方案1:最小改动——用return替代break
在函数里用return可以直接终止当前函数执行,达到退出的效果,替换掉原本的break即可:
var=input("what name would you like to use?: ") varf= len(var) + 1 def rep(): for i in range(0, varf): print(var[:i]) for x in range(0, varf): print(var[x:]) repeat=input("Would you like to go again? Y/N: ") if repeat.upper() =="Y": rep() else: return # 替换break为return rep()
方案2:规范重构——改用while循环
把递归逻辑改成while循环,代码逻辑更直观,也能避免递归栈溢出的问题:
while True: var = input("what name would you like to use?: ") varf = len(var) + 1 for i in range(varf): print(var[:i]) for x in range(varf): print(var[x:]) repeat = input("Would you like to go again? Y/N: ") if repeat.upper() != "Y": break
内容的提问来源于stack exchange,提问作者asuno__
相关产品推荐
相关产品推荐

