如何简化Python中SUMMER OF '69求和代码的elif语句?
简化summer_69函数的条件判断逻辑
当然可以简化你的elif语句,核心思路是调整判断顺序,让状态切换的逻辑更前置,减少冗余分支。先看优化后的代码:
def summer_69(arr): total = 0 ignore = False # 用更语义化的变量名替代alert for num in arr: if num == 6: ignore = True elif num == 9: ignore = False elif not ignore: total += num return total # 原代码用print,改为return更符合函数的返回值设计
简化的关键点:
- 变量名语义化:把
alert改成ignore,直接表达"是否需要忽略当前数字"的含义,可读性更强。 - 调整判断顺序:先处理6和9的状态切换,剩下的逻辑只有两种情况:如果不在忽略状态,就累加数字;如果在忽略状态,直接跳过(不需要写pass,因为没有分支处理就是默认跳过)。
- 去掉冗余分支:原代码中
if x !=6 and alert==0和elif alert==1: pass的分支都可以合并,通过先切换状态再判断是否累加的逻辑,大幅减少elif的数量。
验证示例:
summer_69([1,3,5])→ 9,正确累加所有数字summer_69([4,5,6,7,8,9])→ 9,忽略6-9之间的数字,累加4+5summer_69([2,1,6,9,11])→14,累加2+1+11,正确跳过6-9区间
另外注意,原代码中使用sum作为变量名是不推荐的,因为sum是Python内置函数名,会覆盖内置函数的引用,换成total更安全。
内容的提问来源于stack exchange,提问作者racoonfused
相关产品推荐
相关产品推荐

