【发布时间】: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)
我不确定我的想法哪里出错了。感谢您的帮助。
【问题讨论】: