本文最后更新于 258 天前,其中的信息可能已经过时,如有错误请发送邮件到wuxianglongblog@163.com
判断
判断,基于一定的条件,决定是否要执行特定的一段代码,例如判断一个数是不是正数:
x = 0.5
if x > 0:
print("Hey!")
print("x is positive")
Hey!
x is positive
如果 x > 0 为 False ,那么程序将不会执行两条 print 语句。
虽然都是用 if 关键词定义判断,但与C,Java等语言不同,Python不使用大括号将 if 语句控制的区域包含起来。Python使用的是缩进方法。同时,也不需要用小括号将判断条件括起来。
上面例子中的这两条语句:
print("Hey!")
print("x is positive")
就叫做一个代码块,同一个代码块使用同样的缩进值,它们组成了这条 if 语句的主体。
不同的缩进值表示不同的代码块,例如:
x = 0.5
if x > 0:
print("Hey!")
print("x is positive")
print("This is still part of the block")
print("This isn't part of the block, and will always print.")
Hey!
x is positive
This is still part of the block
This isn't part of the block, and will always print.
x = -0.5
if x > 0:
print("Hey!")
print("x is positive")
print("This is still part of the block")
print("This isn't part of the block, and will always print.")
This isn't part of the block, and will always print.
在这两个例子中,最后一句并不是if语句中的内容,所以不管条件满不满足,它都会被执行。
完整的 if 结构
一个完整的 if 结构通常如下所示(注意:条件后的 : 是必须要的,缩进值需要一样):
if <condition 1>:
<statement 1>
<statement 2>
elif <condition 2>:
<statements>
else:
<statements>
当条件1被满足时,执行 if 下面的语句,当条件1不满足的时候,转到 elif ,看它的条件2满不满足,满足执行 elif 下面的语句,不满足则执行 else 下面的语句。
对于上面的例子进行扩展:
x = 0
if x > 0:
print("x is positive")
elif x == 0:
print("x is zero")
else:
print("x is negative")
x is zero
elif 的个数没有限制,可以是1个或者多个,也可以没有。
else 最多只有1个,也可以没有。
可以使用 and , or , not 等关键词结合多个判断条件:
x, y = 10, -5
x > 0 and y < 0
True
not x > 0
False
x < 0 or y < 0
True
例如,判断一个年份是不是闰年,按照闰年的定义,这里只需要判断这个年份是不是能被4整除,但是不能被100整除,或者正好被400整除:
year = 1900
if year % 400 == 0:
print("This is a leap year!")
# 两个条件都满足才执行
elif year % 4 == 0 and year % 100 != 0:
print("This is a leap year!")
else:
print("This is not a leap year.")
This is not a leap year.
值的测试
Python不仅仅可以使用布尔型变量作为条件,它可以直接在if中使用任何表达式作为条件:
大部分表达式的值都会被当作True
,但以下表达式值会被当作False
:
False
None
0
,0.0
- 空字符串,空列表,空字典,空集合
if表达式
关键词if还可以写到表达式中,构成一个if表达式:
<value1> if <condition> else <value2>
当条件<condition>
满足时,表达式值为<value1>
,否则为<value2>
。
例如:
a = 5
b = "big" if a < 10 else "small"
b
'big'
and/or的返回值
and/or
运算的返回值
and
返回值:第一个为假的值,或者最后一个值or
返回值:第一个为真的值,或者最后一个值
1 and 12
12
0 and [] and 1
0
1 or 12
1
0 or []
[]