布尔变量和 If 语句对于 true 语句失败

Boolean Variables and If statement fails for true statements

提示如下:

Clunker Motors Inc. is recalling all vehicles in its Extravagant line from model years 1999 – 2002. Given variables modelYear and modelName write a statement that assigns True to recalled if the values of modelYear and modelName match the recall details and assigns False otherwise.

我写了这段代码,但对正确的陈述总是得到错误的答案。虚假陈述通过得很好。

modelYear >= 1999 and modelYear <= 2002
modelName == "Extravagant"
if modelYear == True and modelName == True:
    recalled = True
else:
    recalled = False

当你这样做时 -

modelYear >= 1999 and modelYear <= 2002
modelName == "Extravagant"

您只是丢弃了那些布尔表达式的结果,这并不会神奇地生成 modelYearmodelName 布尔值。

您可以简单地使用 if 块本身中的表达式,而不是尝试创建布尔值。示例 -

if 1999 <= modelYear <= 2002 and modelName == "Extravagant":
    recalled = True
else:
    recalled = False

并且如果在您的真实代码中的 if 块内,您所做的只是分配布尔值,那么您可以执行 -

recalled = 1999 <= modelYear <= 2002 and modelName == "Extravagant"

当你有:

modelYear >= 1999 and modelYear <= 2002
modelName == "Extravagant"

您不存储语句的结果。为了让它工作,你可以这样:

year = modelYear >= 1999 and modelYear <= 2002
name = modelName == "Extravagant"
if year and name:
    recalled = True
else:
    recalled = False

但更简单的解决方案是直接在 if 语句中执行此操作,例如:

if modelYear >= 1999 and modelYear <= 2002 and modelName == "Extravagant":
    recalled = True
else:
    recalled = False

最短的方法是:

recalled = modelYear >= 1999 and modelYear <= 2002 and modelName == "Extravagant"