python不是带括号

时间:2015-10-19 02:32:26

标签: python logic brackets not-operator

如果语句返回无效的语法错误,我有一个简单的逻辑。声明是:

if (a[1] != None and a[2] != None and !(a[3] == None and a[4] == None)):

无效的语法是第三个!运营商。有什么理由不行吗?在这种情况下我是否应该使用另一个操作员?

所以逻辑本质上是:a[1] ^ a[2] ^ (a[3] v a[4])(其中这些表示有值)。因此,获得None值的反向逻辑是:

!a[1] ^ !a[2] ^ !(a[3] ^ a[4])

我很确定我的逻辑数学是正确的,所以如何得到我需要的结果呢?

*背景信息:Python 2.7.10,整体代码从SQL Server 2008表中提取数据,对其进行操作,然后将其插入到不允许NULL值的不同表中,并且原始表中充斥着空值

感谢您的帮助!

2 个答案:

答案 0 :(得分:4)

python中的逻辑not运算符不是!,而是not

你想:

if (a[1] != None and a[2] != None and not (a[3] == None and a[4] == None)):

答案 1 :(得分:2)

嗯,风格上,使用None时,最好使用isis not而不是==!=,所以

if (a[1] is not None and a[2] is not None) and not (a[3] is None and a[4] is None):