Codewars练习:Python special_number函数判断逻辑错误如何修复?
问题根因
你的代码在第一次循环就会触发return逻辑:只要首位字符属于允许范围就直接返回Special!!,只要首位不合法就直接返回NOT!!,完全没有遍历后续数位,自然无法判断多位数的合法性。
修正方案
调整return的触发逻辑即可:
- 遍历数位过程中,只要有任意一个数位不在允许集合里,直接返回
NOT!! - 所有数位全部遍历完成没有命中非法情况,再统一返回
Special!!
修正后代码
def special_number(number): special = '012345' strnum = str(number) for i in strnum: if i not in special: return "NOT!!" # 所有数位都检查通过才返回Special return "Special!!"
简化写法(可选)
用Python内置的all()函数可以一行实现相同逻辑,可读性也更高:
def special_number(number): return "Special!!" if all(i in '012345' for i in str(number)) else "NOT!!"
内容的提问来源于stack exchange,提问作者SJG
相关产品推荐
相关产品推荐

