Python 7BOOM代码运行异常:筛选40-80符合要求数字为何仅排除77?
代码逻辑错误分析
- 第一处是核心逻辑运算符误用:需求要求打印的数字需要同时满足「不包含数字7 且 不能被7整除」两个规则,你代码中使用
or(或)运算符连接条件,只要任意一个条件成立就会打印数字,自然会输出大量不符合要求的数。 - 第二处是「判断数字不含7」的逻辑也使用了错误的
or运算符:要满足十位和个位都不等于7,需要用and(且)连接两个判断,用or的话只有十位和个位同时为7(也就是77)时,该段判断才会不成立,这就是你当前运行结果仅排除77的直接原因。
修正后的代码
for i in range(40, 81): # 三个条件同时满足才打印:不能被7整除、个位不是7、十位不是7 if i % 7 != 0 and i % 10 != 7 and i // 10 != 7: print(i)
反向逻辑简化写法
你也可以用反向排除逻辑写,可读性更高:
只要数字满足「能被7整除、个位为7、十位为7」任意一个条件就跳过,否则打印
for i in range(40, 81): if i % 7 == 0 or i % 10 == 7 or i // 10 == 7: continue print(i)
内容的提问来源于stack exchange,提问作者ofekAgayev
相关产品推荐
相关产品推荐

