Python3中for循环内跳过step1直接跳转至step2的实现方法
解决方法:用嵌套循环或函数封装实现跳转
Python没有goto语句,要实现跳过step1重复执行step2的需求,可以用以下两种方式:
方法1:内部while循环+标志位控制
把step2的逻辑包裹在一个内部while True循环里,通过break和continue控制流程:
- 需要回到step1时,
break内部循环,进入下一次for循环的step1 - 需要重复step2时,用
continue回到内部循环开头(即step2起始位置) - 用标志位处理终止整个循环的场景
修改后的代码示例:
for k in range(m): # step 1 step_1() # this is a function that updates some values should_exit = False # 内部循环包裹step2,实现重复执行逻辑 while True: # step 2 if len(R) == 0: print("R is empty - construction completed!") should_exit = True break elif len(R) == 1: if f[i] <= b[k]: # do something and terminate the program should_exit = True break else: # do something and go back to step 1 break else: # function that assigns some values to i and j i,j = select_two_closest_nodes() if f[i] > b[k] and f[j] <= b[k]: # step 2a if b[k]-f[j] <= A: # do something and go back to step 1 break else: # do something and go back to step 2 continue # 回到内部循环开头,重新执行step2 # 其他未覆盖的情况,默认回到step1 break # 检查是否需要终止整个循环 if should_exit: break
方法2:将step2封装为函数
把step2的逻辑单独抽成函数,函数返回状态(回到step1/终止循环),内部用while循环处理重复执行step2的需求:
def handle_step2(R, f, b, k, A): while True: if len(R) == 0: print("R is empty - construction completed!") return "terminate" elif len(R) == 1: if f[i] <= b[k]: # do something and terminate the program return "terminate" else: # do something return "back_to_step1" else: i,j = select_two_closest_nodes() if f[i] > b[k] and f[j] <= b[k]: if b[k]-f[j] <= A: # do something return "back_to_step1" else: # do something continue # 重复执行step2 # 其他情况默认回到step1 return "back_to_step1" # 主循环 for k in range(m): step_1() status = handle_step2(R, f, b, k, A) if status == "terminate": break
两种方法本质都是用循环模拟跳转逻辑,避免代码冗余,同时保持流程的可读性。
内容的提问来源于stack exchange,提问作者Parseval
相关产品推荐
相关产品推荐

