python中的逻辑代码给出了错误的答案

时间:2018-07-25 13:21:14

标签: python-3.x logic

给定一周中的一天,将其编码为0 = Sun,1 = Mon,2 = Tue,... 6 = Sat和一个布尔值(表示我们是否正在休假),返回格式为“ 7:00”的字符串”表示闹钟何时应响。在工作日中,警报应为“ 7:00”,在周末应为“ 10:00”。除非我们休假-否则在工作日应为“ 10:00”,在周末应为“休息”。

我的代码:

  def alarm_clock(day,vacation):
  if(vacation):
      if(day == 0 | day == 6):
          return "off"
      return "10:00"
  else:
      if(day == 0 | day == 6):
          return "10:00"
      return "7:00"

使用输入:

print(alarm_clock(0,True))

我的代码应该为“ off”时返回“ 10:00”

使用输入:

print(alarm_clock(0,False))

我的代码返回“ 7:00”,应该是“ 10:00”

我的代码中的错误在哪里?

3 个答案:

答案 0 :(得分:1)

像这样更改它:

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

print(alarm_clock(0,True))

结果:

off

管道没有达到您的期望:Pipe character in Python实际上是按位运算符。 :)

答案 1 :(得分:0)

official documentation中可以看到,Python中的logical "or" operatoror,而不是|,它是bitwise operator

答案 2 :(得分:0)

您使用按位或“ |”。您需要使用逻辑或“或”

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