i在讲 if not 之前,得先弄清楚 not 在python中的意思:
not 是一个逻辑判断词
当 not 与变量连用的时候:
所以,
在python中,None, False, 空字符串 ‘’ , 0, 空列表[], 空字典{}, 空元组() 都相当于False。
要注意的是,虽然”0“是 False,但是 ”[0]" 是True
,因为只有
空
列表为False,字典也是如此,
另外有空格的字符串 ’ ’ 也不算空字符串。
仔细的同学可能看到上面元组(0)并不是True,那是因为在
写元组tupple时,如果只有一个元素,需要在元素后面加上逗号,
比如:(0,),指定为元组类型,如果不加逗号,python会把它当成
整型
,整数 0 为False,所以(0)也为False。
弄清楚not之后,加上 if 就很简单了,如果if not 后面的语句是False,则执行冒号后面的语句,否则执行else(如果有else的话)。
-
注意
:有时候if not 的语句很长,又夹带is、and、or,容易理解错误,比如:
应该理解为if not (x is a) ,而不是if (not x) is a
应该理解为if (not x) or (a
b),而不是 if not (x or a
b),当然这里a==b可以换成其他条件。or 换成and也是一样,也就是说,(and、or)和is不一样,要仔细甄别。
if not语句是非常常用的语句,尤其在数据结构中。由于python语言的简洁,if not 和and. or. is.连用可以减少大量的代码空间。
这种情况一般 not 与 is 连用,is not 直接按字面理解即可。理解为 if x (is not) None,而不是if x is (not None)。
补充:
在实际写代码的时候,经常遇到要判断None的情况,可能会遇见下面这些写法:
if x is None:…#最好使用这种写法
if not x:…
if not x is None: …
而在判断None的过程,常常伴随着 [] 的判断,这时我们使用if not x是有问题的:
因为上面讲过,not是逻辑判断,而列表、空字典等的逻辑和None是一样的,都是False,if not 是没办法区分的,输出的都是True。所以要确定变量=[]时对if not 的判断没有影响,否则会报错。
使用 if not x is None也是有问题的,这种写法容易误解为if (not x) is None,而实际上应该理解为 not (a is None)
a is None 返回False ,所以not(False)返回True,而实际上[] 并不是None,应该返回False
所以最好直接使用if x is None,简介明了。
a is b比较的a 和 b的id,只有a,b的id相同才会输出True:
上面if … not …中的 is not其实是一样的道理
1.条件测试
每个if语句的核心都是一个值为True或False的表达式,这种表达式被称为条件测试。
当条件测试的结果为True时,if语句会执行后面的代码;如果为False则不会执行。
1.1检查是否相等
与Java和C
中
相同,检查两个值是否相等用两个连起来的等号进行判断(==),如果等号两边的值相等则返回True,如果不同则返回False。
注意:不能写成一个等号(=),一个等号是赋值语句,两个等号才是条件测试语句。
1.2检查时是否要考虑大小写
在
Python
中
检查是否相等
可能有这样一种情况,当你想检查其他条件后一个条件解析为真。在这种情况下,可以使用嵌套的if结构。
在嵌套的 if 语句结构,可以在一个 if…
elif
… else 结构里面可有另外一个 if…
elif
… else 结构。
嵌套 if…
elif
…else 结构的语法可以是:
if expression1:
statement(s)
if expression2:
statement(s)
elif
expression3:
statement(s)
statement(s)
elif
expression4:
statement(s)
今天下午在练习
python
时用了“if…if…else…”的分支结构,结果运行出来吓我一跳。原来我想当然的认为“if…if…else…”是“if…
elif
…else…”的简化结构(这个错误的看法好像还是从学C语言继承过来的)。学了这么多天才发现其
中
的区别啊。下面先说说
python
,然后再说一下C语言里面的if语句。
“
python
中
通过if、
elif
、else等保留字提供单分支、二分支和多分支结构。”
1.单分支结构(if语句)
if<条件>:
2. 二分支结构(if-else语句)
if <条件>:
else :
3.多分支结构(if
一、一个简单示例:
假设你有一个汽车列表,并想将其
中
每辆汽车的名称打印出来。对于大多数汽车,应以首字母大写的方式打印其名称,但对于汽车名’bmw’,应以全大写的方式打印。下面的代码遍历这个列表,并以首字母大写的方式打印其
中
的汽车名,不过对于’bmw’,则以全大写的方式打印:
二、条件测试:
每条if语句的核心都是一个值为True或False的表达式,这种表达式称为条件测.
在
Python
中
,if语句有几种常见的
用法
。首先是if...else...语句,它的语法是:如果条件为真,则执行if后面的代码块,否则执行else后面的代码块。[1]另外,
Python
中
的not关键字可以用于逻辑判断,当与变量连用时,可以判断变量是否为None、False、空字符串、0、空列表、空字典或空元组,这些值都相当于False。[2]此外,
Python
中
还有if...
elif
...else...语句,它的语法是:如果第一个条件为真,则执行对应的代码块,否则继续判断下一个条件,直到找到为真的条件或者执行完所有条件后执行else后面的代码块。[3]需要注意的是,
elif
和else都不能单独使用,必须和if一起出现,并且要正确配对。