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

CodingBat鹦鹉(parrot)问题Python代码故障排查及优化求助

鹦鹉问题代码错误排查与解决方案

错误原因排查

现有代码的问题出在逻辑运算符优先级上:Python中and的优先级高于or,所以原代码的判断逻辑实际执行顺序是:

(talking and hour < 7) or (hour > 20)

这就导致只要hour>20,不管talking是否为True,都会直接返回True,完全不符合需求里的「必须同时满足鹦鹉在叫+时间异常才返回True」的规则,这就是talking=False、hour=21/23两个用例不通过的原因。

修复方案

只要给时间判断的部分加上括号,保证「早于7或晚于20」是一个整体的判断条件即可:

def parrot_trouble(talking, hour):
    if talking and (hour < 7 or hour > 20):
        return True
    else:
        return False

更简洁的实现

因为判断表达式本身返回的就是布尔值,可以直接返回表达式结果,省去if分支,代码更精简:

def parrot_trouble(talking, hour):
    return talking and (hour < 7 or hour > 20)

验证效果

修复后的代码可以通过所有测试用例:

  • parrot_trouble(True, 6) → True 符合预期
  • parrot_trouble(True, 7) → False 符合预期
  • parrot_trouble(False, 6) → False 符合预期
  • parrot_trouble(False, 21) → False 符合预期
  • parrot_trouble(False, 23) → False 符合预期

内容的提问来源于stack exchange,提问作者Albert

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 09:36:06