You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 10:57:00