【问题标题】:CodingBat > Warmup-1 > parrot_troubleCodingBat > Warmup-1 > parrot_trouble
【发布时间】:2020-07-23 19:26:21
【问题描述】:

这是我作为程序员的第一个问题,我正在自学 Python,希望您能帮助我弄清楚为什么我对这个问题的回答是错误的。

我知道该解决方案更简单,并且可能在语法上更正确,但我想知道为什么我的代码根本不起作用。

我正在解决的问题:

链接: https://codingbat.com/prob/p166884

问题贴在这里: 我们有一只大声说话的鹦鹉。 “小时”参数是当前小时时间,范围为 0..23。如果鹦鹉在说话并且时间在 7 点之前或 20 点之后,我们就有麻烦了。如果我们有麻烦,则返回 True。

parrot_trouble(True, 6) → True parrot_trouble(True, 7) → False parrot_trouble(False, 6) → False

我的回答:

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

结果:

Expected    Run     
parrot_trouble(True, 6) → True  None    X   
parrot_trouble(True, 7) → False None    X   
parrot_trouble(False, 6) → False    None    X   
parrot_trouble(True, 21) → True None    X   
parrot_trouble(False, 21) → False   None    X   
parrot_trouble(False, 20) → False   None    X   
parrot_trouble(True, 23) → True None    X   
parrot_trouble(False, 23) → False   None    X   
parrot_trouble(True, 20) → False    None    X   
parrot_trouble(False, 12) → False   None    X   

解决办法:

def parrot_trouble(talking, hour):
  return (talking and (hour < 7 or hour > 20))
      Need extra parenthesis around the or clause
      since and binds more tightly than or.
      and is like arithmetic *, or is like arithmetic +

我尝试在小时布尔表达式周围加上括号,但这也不起作用:

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

我不确定我的想法哪里出错了。感谢您的帮助。

【问题讨论】:

    标签: python function boolean


    【解决方案1】:

    return 是关键字,而不是函数。试试return True 而不是return(True)

    这是因为括号表示执行一个函数,所以这意味着你正在调用一个函数。

    【讨论】:

      【解决方案2】:

      这里的问题是您使用此语句的语法

      (hour < 7 == True or hour > 20 == True)
      

      当您已经做出声明时,您不需要输入'== true'小时

      直接改成

      (hour < 7 or hour > 20)
      

      【讨论】:

        【解决方案3】:
        def parrot_trouble(talking, hour):
                if talking == True and (hour<7 or hour>20):
                    return True
                else:
                    return False
        

        【讨论】:

        • 请详细说明为什么这是解决方案
        猜你喜欢
        • 2021-02-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多