如何实现固定迭代次数或满足终止条件时停止的无限循环?
迭代逻辑优化求助
我有个程序需要重复执行某操作固定次数,或者持续运行直到满足某个终止条件。现有实现功能正常,但代码结构我不太满意。
最初的逻辑是这样的:
max_iterations = 5 # 可以是整数或None(实际值来自用户输入) stop_flag = False i = 0 while not stop_flag: do_some_operation(i) i += 1 stop_flag = (i == max_iterations) or test_some_stop_condition()
但同时存在i变量和stop标志,感觉冗余,我不太喜欢这种写法。
后来我把逻辑移到while条件里,消除了停止标志:
i = 0 while not ((i == max_iterations) or test_some_stop_condition()): do_some_operation(i) i += 1
但这样可读性更差,while里的条件表达式不够直观。
于是我用itertools.count实现迭代:
import itertools max_iterations = 5 # 可以是整数或None(实际值来自用户输入) for i in itertools.count(): do_some_operation(i) if (i == max_iterations) or test_some_stop_condition(): break
这种写法还算简洁可读,但我还是不太满意。理想状态下,终止条件应该完全包含在for或while语句里,循环体只保留实际业务逻辑,但我想不出简洁的实现方式。
有没有更优的解决方案?
补充说明:
i变量是必需的,因为do_some_operation需要使用它。- 无论
max_iterations是None还是整数,test_some_stop_condition()都可能返回True,这是符合预期的。
(这个问题可能更适合发布在代码评审类平台,我不太确定……)
内容的提问来源于stack exchange,提问作者jfowkes
相关产品推荐
相关产品推荐

