我正在尝试调试(重写?)别人的 Python/cherrypy Web 应用程序,我遇到了以下“if”语句:
if not filename.endswith(".dat") and (
filename.endswith(".dat") or not filename.endswith(".cup")
):
raise RuntimeError(
"Waypoint file {} has an unsupported format.".format(
waypoint_file.filename
)
)
我认为这与:
if not A and (A or not B):
如果是这样,那么:
如果
A = False
,则减少为if True and (False or not B):
if True and not B
=not B
如果
A = True
,那么它会减少为if False:
,即if
块永远不会执行
我很确定
if
块的目的是警告用户相关文件的扩展名既不是 .DAT
也不是 .CUP
,但在我看来它实际上并不执行那个意图。
我认为
if
块应该是:
if(not .DAT and not .CUP) = if not(.DAT or .CUP)
正确吗?
据我所知,要使第二个表达式与该陈述相关,第一个表达式
Not A
必须是真的。因此,A 为假。
因此,第二条语句如下所示:
False Or Not B
对于第二个陈述也为真,因此 B 必须为假。
所以这是一种复杂的说法,
Not A and Not B
,根据德摩根定律意味着非(A或B)