基本上,我正在创建一个计算器,到目前为止,这个程序要求用户进行一个涉及加法、减法、乘法和/或除法的运算。然后程序继续创建两个列表,一个包含完整的数字,另一个包含运算符。代码的下一部分应该检查包含运算符的列表是否以if语句的形式包含乘法或除法,但是if语句失败了,它说列表包含“*”和“/”当它不包含时,下面是不起作用的代码。有什么帮助吗?你知道吗
if ("*") or ("/") in Oper_NAN:
print("POSITIVE")
else
print("NEGATIVE")
问题是if语句总是返回正数而从不返回负数,即使这两个运算符不在Oper\u NAN列表中(Oper\u NAN中的所有项都是字符串)。我给if语句贴错标签了吗?谢谢你的阅读!你知道吗
这个if语句基本上可以分解为以下几点:
python中的所有内容都有一个真值,非空字符串的计算结果为
True
。你知道吗您的
if
条件将被延迟计算。首先计算左侧,仅当左侧为False
时才计算右侧。但是,非空字符串始终为True,因此if条件中的代码将始终执行。你知道吗布尔逻辑/真值填充:
P or Q
对于两个状态P
和Q
将在以下情况下计算为True
。P
是True
,不管Q是真是假,或者P
是False
,Q
是True
,每隔一个例子就是False
。你知道吗如果有兴趣,这里有更“数学”的一面,使用一个被称为真值表的东西。你知道吗
您可以使用:
给出:
你的
or
的每一面都会被单独评估。所以你在考虑这两种说法是否正确:第一个字符串是长度非零的字符串,在布尔上下文中总是作为
True
计算。所以你的if
语句总是True
,因为True
或与任何事物相关的语句总是True
。你知道吗最简单的解决方法是:
您也可以使用
any()
和生成器表达式来编写它,不过这对于两个字符来说可能有些过分:相关问题 更多 >
编程相关推荐