编码蝙蝠>热身1>鹦鹉的麻烦

2024-05-15 01:09:44 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我作为程序员的第一个问题,我正在自学Python,希望你们能帮助我找出为什么我对这个问题的回答是错误的

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

我正在处理的问题:

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

问题粘贴在此处: 我们有一只会大声说话的鹦鹉。“小时”参数是范围为0..23的当前小时时间。如果鹦鹉在说话,而时间在7点之前或20点之后,我们就有麻烦了。如果我们遇到麻烦,请返回True

鹦鹉学舌(对,6)→ 符合事实的 鹦鹉学舌(对,7)→ 错误的 鹦鹉学舌(错,6)→ 假的

我的答案:

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)

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


Tags: orandnonefalsetruereturndef错误
3条回答

这里的问题是这个语句的语法

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

当您已经在一小时内做出声明时,不需要输入“==true”<;7.

只需将其更改为

(hour < 7 or hour > 20)

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

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

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

相关问题 更多 >

    热门问题