Python编程思想(9):条件语句(if)

《Python编程思想》总目录

上一篇:Python编程思想(8):使用字典

目录

1. if语句基础

2. 由于缩进错误引发的血案

3. if条件的类型

4. pass语句


if语句用于进行条件判断,可以使用布尔表达式或布尔值作为分支条件判断。Python语言的if语句既可以作为普通语句使用,也可以作为表达式使用。下面先介绍if语句作为普通语句使用的方法。

1. if语句基础

Python语言的ifi语句有如下3种形式。

第1种形式:

if expression: 
    statements...

第2种形式:

if expression: 
    statements... 
else: 
    statements...

第3种形式:

if expression:
    statements
elif expression1:        # 可以有任意多个elif语句
    statements1...
elif expression2:
    statements2...    
else:
    statements...

在上面if语句的3种形式中,第2种形式和第3种形式类似的,如果第2种形式中的elif子句不出现,则变成了第2种形式。也就是说,第3种形式其实是第2种形式的特例。

对于上面的if语句,会按下面的过程执行:

1. 如果if条件为True,程序就会执行if条件后面的多条语句;

2. 如果if条件为False,就会依次判断elif条件,如果某一个elif条件为True,程序就会执行该elif条件后面的多条语句;

3. 如果前面所有条件都为False,程序就会执行else子句中的所有代码(如果有else子句的话);

要注意的是,在if语句中, if expression:、 elif expression:和else:后面缩进的多行代码被称为代码块,一个代码块会被当做一个整体来执行,除非遇到了return、break、continue等语句,会终止代码块后面语句的执行。

在使用Python语言时要注意,Python语言中的所有语句(包括条件、循环等)都使用缩进来标记代码块,而大多数编程语言都是用一对花括号来标记代码块。所以在使用Python时一定要注意缩进,缩进一旦乱了,就不容易调回原貌了。所以说,Python语言尽管强大,但Python语言本身并不是一种格式自由的语言。

下面看一个典型的if语句案例:if语句基础.py

name = input("请输入你的名字:")
if name == "Bill" :
    # 只有在name等于Bill时,才会执行下面两条语句
    # 这两条语句是一个整体,要么一起执行,要么都不执行
    print("这是我们的CEO")
    print("CEO正在开会,一个小时后才能见记者")
else:
    # 当输入的name不是Bill时,会执行下面的两条语句
    print('对不起,我不认识这个人')
   print('请重新输入名字')

运行上面代码,如果输入的name是Bill,则会输出下面的结果

这是我们的CEO 
CEO正在开会,一个小时后才能见记者

如果输入的name不是Bill,则会输出下面的结果:

对不起,我不认识这个人 
请重新输入名字

2. 由于缩进错误引发的血案

需要说明的是,虽然 Python语法允许代码块随意缩进N个空格(或其它空白符,如Tab),但同一个代码块内的代码必须保持相同的缩进,也就是说,不能一会缩进2个空格,一会缩进4个空格。

例如下面的代码就会发生错误。

示例代码:if语句错误.py

name = input("请输入你的名字:")
if name == "Bill" :
print("这是我们的CEO")
print("CEO正在开会,一个小时后才能见记者")

上面代码中,由于if语句后面没有缩进的代码,其实相当于if语句没有了代码块,所以Python程序执行会抛出如图1所示的错误。

Python编程思想(9):条件语句(if)_第1张图片

就算if语句的代码块中所有的语句都有缩进,但由于缩进的尺度不同,在执行时也会抛出异常,看下面的代码:

示例代码:if语句错误1.py

name = input("请输入你的名字:")
if name == "Bill" :
    print("这是我们的CEO")
     print("CEO正在开会,一个小时后才能见记者")

在上面的代码中,倒数第2条语句缩进了4个空格,而最后一条语句缩进了5个空格,所以执行这段代码,会抛出如图2所示的异常。

Python编程思想(9):条件语句(if)_第2张图片

还有一些情况,尽管程序执行不会有任何问题,但由于缩进的错误,会导致程序逻辑出现问题。例如,下面的代码,最后一条语句本应该属于if语句,但由于没有缩进,所以if语句和最后一条print语句其实是平级的,则就会导致不管输入的是什么,都会执行最后一条print语句。

示例代码:if没有缩进.py

name = input("请输入你的名字:")
if name == "Bill" :
    print("这是我们的CEO")
print("CEO正在开会,一个小时后才能见记者")

另外,组成代码块的不光是缩进,还有冒号(:),也就是说,代码块的是从冒号开始的,所以在if、elif和else后面,千万不要忘了写冒号,否则Python程序不会成功运行。

在下面的代码中,if语句后面没有写冒号。

示例代码:if没有冒号.py
 

name = input("请输入你的名字:")
if name == "Bill" 
    print("这是我们的CEO")
    print("CEO正在开会,一个小时后才能见记者")

运行这段代码,会输出如下的错误。

 File "/Python编程思想/04-控制流程/if没有冒号.py", line 13
    if name == "Bill"
                    ^
SyntaxError: invalid syntax

3. if条件的类型

从前面的例子可以看出,if语句的条件似乎只有布尔类型,或者是True,或者是False,那么是不是只有布尔类型呢?其实并不是这样的。if语句的条件可以是任意类型,这些类型的值最终都会被解释为布尔类型。而这些类型的一些特殊值会被解释成False,其他的值都被认为是True。

if语句的条件支持的主要类型包括布尔、对象、数值、字符串、元组、列表和字典,这些类型中如下的值会被解释为False。

False、None、0、""、()、[]、{}

从被解释为False的值看出,所有的集合类型,都是空集合被解释为False,而基础类型,一般都是该类型的默认值(如数值的0,字符串的空串)被解释为False。

示例代码:if条件的类型.py

# 定义空字符串
s = ""
if s :
    print('s不是空字符串')
else:
    print('s是空字符串')
# 定义为0的值
value = 0
if value:
    print('value的值不是0')
else:
    print('value的值是0')
value = 0
# 定义空列表
persons = []
if persons:
    print('persons不是空列表')
else:
    print('persons是空列表')
# 定义空字典
data = {}
if data:
    print('data不是空字典')
else:
    print('data是空字典')

4. pass语句

如果使用缩进标识代码块会带来一个问题,就是如果代码块为空,也就是没有一行代码的代码块该如何处理呢?如果使用其他语句,如Java,就用一对空的大括号就可以了,但Python该如何做呢?其实Python的设计者也考虑到这种情况了,这就是pass语句。首先要知道,Python的代码块必须至少有一条语句,否则就没有所谓的缩进了。如果代码块中确实没有一条实际的代码,那么就用pass语句代替,pass代表空语句,其实就是一个语句占位符,用来确定代码缩进的。

示例代码:pass语句.py

name = input("请输入你的名字:")
if name == "Bill" :
    # 只有在name等于Bill时,才会执行下面两条语句
    # 这两条语句是一个整体,要么一起执行,要么都不执行
    print("这是我们的CEO")
    print("CEO正在开会,一个小时后才能见记者")
else:
   pass    # 代码块中没有任何语句时,必须用pass

你可能感兴趣的:(Python编程思想,Python,培训,python,python编程思想)