我是 python 的新手,所以我确定我做错了什么。我正在定义一个接受字符串变量的函数。我不能确定变量到底是什么,但是有 3 个值我想测试,如果找到值就返回一个字符串。如果找不到这些值,我只想返回“未知”。这是我的代码:
def item_priority(cell_color):
if cell_color == 'green' or 'yellow':
return 'low'
elif cell_color == 'red':
return 'high'
else:
return 'unknown'
那么我尝试执行:
>> item_priority('orange')
蟒蛇返回:
'low'
我希望看到的结果是“未知”。即使我用“item_priority(‘red’)”进行测试,它仍然返回“low”。到目前为止,我在这个网站上找到的唯一解释涉及比我的更复杂的代码。
我尝试将第二个“if”与“elif”互换,但我的结果仍然相同。我不确定我在这里做错了什么。任何帮助是极大的赞赏。谢谢!
原文由 user299331 发布,翻译遵循 CC BY-SA 4.0 许可协议
问题在于
if cell_color == 'green' or 'yellow':
行。您打算评估颜色是green
还是yellow
但这不是or
在这里工作的方式简单地说,当你有
LEFT or RIGHT
像 python 中的代码时,首先评估LEFT
和RIGHT
表达式。在你的情况下,这就是发生的事情LEFT
是cell_color == 'green
和RIGHT
是yellow
"red"
作为颜色时,LEFT
计算为false
LEFT
表达式为假,RIGHT
被评估RIGHT
表达式,它的计算结果为 TrueFalse or True
评估对True
又是if
是"low"
要记住的重要一点是,当您在需要布尔值的地方使用非空字符串时,它的计算结果为
True
所以故障线应该变成
if cell_color == 'green' or cell_color == 'yellow':
编辑: 看到你对另一个答案的评论,你似乎想检查多种颜色。在这种情况下,您可以使用内置的
any()
函数来检查传递给它的可迭代对象的任何值是否计算为真。