Python判断数字为3的倍数或含数字5的代码输出错误如何修正
问题分析
你的代码存在三处核心逻辑错误:
elif i:的判断逻辑完全错误。1~100的所有正整数布尔值均为True,所以只要不是3的倍数的数都会进入这个分支,else分支永远不会执行,原本应该输出数字本身的场景完全失效。- 包含5的判断逻辑缺失。你写的
for digit in str(i):只是遍历数字的每一位,没有判断该位是否等于5,而且每遍历一位就输出一次FiveInIt,哪怕数字是1、2这种完全不含5的数,也会输出对应位数的FiveInIt,自然会出现大量重复的错误输出。 - 就算补充了位等于5的判断,遍历每一位的写法也会导致多位数含多个5时重复输出
FiveInIt,比如55会输出两次,不符合需求。
修复后的代码
最小改动版本
直接用'5' in str(i)就能快速判断数字是否包含5,无需循环遍历每一位:
for i in range(1, 101): if i % 3 == 0: print("MultipleOfThree", end=" ") elif '5' in str(i): print("FiveInIt", end=" ") else: print(i, end=" ")
优化无多余空格版本
如果不希望输出末尾多一个空格,可以用列表收集结果后统一拼接:
result = [] for i in range(1, 101): if i % 3 == 0: result.append("MultipleOfThree") elif '5' in str(i): result.append("FiveInIt") else: result.append(str(i)) print(' '.join(result))
内容的提问来源于stack exchange,提问作者Ümit Yaman
相关产品推荐
相关产品推荐

