前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python编程思想(9):条件语句(if)

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

作者头像
蒙娜丽宁
修改2020-05-26 17:25:37
6820
修改2020-05-26 17:25:37
举报
文章被收录于专栏:极客起源极客起源

--------------正文---------------

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

1. if语句基础

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

第1种形式:

代码语言:javascript
复制
if expression:
    statements...

第2种形式:

代码语言:javascript
复制

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

第3种形式:

代码语言:javascript
复制

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

代码语言:javascript
复制

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

代码语言:javascript
复制

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

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

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

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

代码语言:javascript
复制

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

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

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

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

代码语言:javascript
复制

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

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

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

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

代码语言:javascript
复制

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

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

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

3. if条件的类型

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

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

代码语言:javascript
复制
False、None、0、""、()、[]、{}

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

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

代码语言:javascript
复制
# 定义空字符串
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

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

往期回顾:

Python编程思想(1):Python简介与开发环境搭建

Python编程思想(2):Python主要特性、命名规则与代码缩进

Python编程思想(3):数字及其相关运算

Python编程思想(4):字符串类型

Python编程思想(5):列表与元组的基础知识

Python编程思想(6):格式化字符串

Python编程思想(7):列表的增删改操作

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 极客起源 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档