Python 条件语句
Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。
可以通过下图来简单了解条件语句的执行过程:
Python程序语言指定
任何非 0
和非空(null)
值为 true
!
而 0
或者 null
为false
!
if 条件语句
Python 编程中 if 语句用于控制程序的执行,基本形式为:
if (判断条件):
'''执行代码'''
else:
'''执行代码'''
其中"判断条件"成立时(非零),则执行后面的语句,而执行内容可以多行,以缩进来区分表示同一范围。
else 为可选语句,当需要在条件不成立时执行内容则可以执行相关语句。
示例:
# -*- coding: UTF-8 -*-
# 例1:if 基本用法
flag = False
name = 'luren'
if name == 'python': # 判断变量是否为 python
flag = True # 条件成立时设置标志为真
print('Welcome, BOSS!') # 并输出欢迎信息
else:
print(name) # 条件不成立时输出变量名称
结果:
luren # 输出结果
if + elif + else
if 语句的判断条件可以用>(大于)、<(小于)、==(等于)、>=(大于等于)、<=(小于等于)来表示其关系。
当判断条件为多个值时,可以使用以下形式:
if (判断条件):
'''执行代码'''
elif(另外判断条件):
'''执行代码'''
elif(另外判断条件):
'''执行代码'''
else:
'''执行代码'''
示例:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 例2:elif用法
num = 5
if num == 3: # 判断num的值
print('BOSS')
elif num == 2:
print('user')
elif num == 1:
print('worker')
elif num < 0: # 值小于零时输出
print('Error')
else:
print('roadman') # 条件均不成立时输出
结果:
roadman # 输出结果
由于 Python 并不支持 switch
语句,所以多个条件判断,只能用 elif 来实现,如果判断需要多个条件需同时判断时,可以使用 or (或),表示两个条件有一个成立时判断条件成功;使用 and (与)时,表示只有两个条件同时成立的情况下,判断条件才成功。
# -*- coding: UTF-8 -*-
# 例3:if语句多个条件
num = 9
if num >= 0 and num <= 10: # 判断值是否在0~10之间
print 'hello'
# 输出结果: hello
num = 10
if num < 0 or num > 10: # 判断值是否在小于0或大于10
print 'hello'
else:
print 'undefine'
# 输出结果: undefine
num = 8
# 判断值是否在0~5或者10~15之间
if (num >= 0 and num <= 5) or (num >= 10 and num <= 15):
print 'hello'
else:
print 'undefine'
# 输出结果: undefine
当 if
有多个条件时可使用括号来区分判断的先后顺序,括号中的判断优先执行,此外 and
和 or
的优先级低于 >(大于)、 <(小于)等判断符号,即大于和小于在没有括号的情况下会比与或要优先判断。
三元表达式
三元运算符通常在Python里被称为条件表达式,这些表达式基于真(true)/假(false)的条件判断,在 Python 2.4 以上才有了三元操作。
下面是一个伪代码和例子:
伪代码:
#如果条件为真,返回真 否则返回假
condition_is_true if condition else condition_is_false
示例:
is_fat = True
state = "fat" if is_fat else "not fat"
它允许用简单的一行快速判断,而不是使用复杂的多行 if
语句。 这在大多数时候非常有用,而且可以使代码简单可维护。
另一个晦涩一点的用法比较少见,它使用了元组,请继续看:
伪代码:
#(返回假,返回真)[真或假]
(if_test_is_false, if_test_is_true)[test]
示例:
fat = True
fitness = ("skinny", "fat")[fat]
print("Ali is", fitness)
#输出: Ali is fat
这之所以能正常工作,是因为在Python中,True 等于1,而 False 等于0,这就相当于在元组中使用0和1来选取数据。
上面的例子没有被广泛使用,而且 Python 玩家一般不喜欢那样,因为没有 Python 味儿(Pythonic)。这样的用法很容易把真正的数据与 True/False 弄混。
另外一个不使用元组条件表达式的缘故是因为在元组中会把两个条件都执行,而 if-else
的条件表达式不会这样。
例如:
condition = True
print(2 if condition else 1 / 0)
#输出: 2
print((1 / 0, 2)[condition])
#输出 ZeroDivisionError 异常
这是因为在元组中是先建数据,然后用 True(1)/False(0) 来索引到数据。 而 if-else
条件表达式遵循普通的 if-else
逻辑树, 因此,如果逻辑中的条件异常,或者是重计算型(计算较久)的情况下,最好尽量避免使用元组条件表达式。