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

Coding Bat代码错误?求解Logic-1>alarm_clock题目问题

排查CodingBat Logic-1 > alarm_clock 代码错误

我一眼就看出问题出在逻辑运算符的优先级上,Python里and的优先级比or高,这导致你写的条件判断和你预期的逻辑完全不符。

问题分析

看你代码里的这两个关键条件:

elif day == 0 or day == 6 and not vacation:

Python会把这行解析成:

elif day == 0 or (day == 6 and not vacation):

意思是「只要是周日(day=0),不管是否度假,都会返回10:00」——但实际上周末度假应该返回off,这直接触发了错误分支。

同样,第三个条件:

elif day == 6 or day == 0 and vacation:

会被解析为:

elif day == 6 or (day == 0 and vacation):

这意味着「只要是周六(day=6),不管是否度假,都会返回off」——但周末不度假应该返回10:00,这也完全不符合题目要求。

修正后的代码

你只需要把周末的判断用括号括起来,确保day ==0 or day ==6作为一个整体先判断,再结合vacation的状态:

def alarm_clock(day, vacation):
    if 0 < day < 6 and not vacation:
        return "7:00"
    elif (day == 0 or day == 6) and not vacation:
        return "10:00"
    elif (day == 0 or day == 6) and vacation:
        return "off"
    else:
        return "10:00"

或者换一种更清晰的写法,先区分工作日和周末,再判断度假状态,可读性更高:

def alarm_clock(day, vacation):
    # 工作日:1-5
    if 1 <= day <= 5:
        return "10:00" if vacation else "7:00"
    # 周末:0或6
    else:
        return "off" if vacation else "10:00"

验证所有测试场景

这个修正能完美覆盖题目要求的所有情况:

  • 工作日+不度假 → 7:00
  • 工作日+度假 →10:00
  • 周末+不度假 →10:00
  • 周末+度假 →off

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:25:41