原文链接:http://www.juzicode.com/python-tutorial-condition/
Python中有2种主要的流程控制语句,一种是条件语句,一种是循环语句。以下图为例,条件语句用来判断某个条件是否为真,如果为真就执行代码段1,如果为假就执行代码段2:
条件语句内的一段代码叫做代码块,在C/C++语言中,一个代码块一般用{}包含起来,在Python中代码块是通过缩进来表示的,同一层缩进里的代码就表示一个代码块。在循环语句、函数的定义中都通过缩进来表示同一个代码块。在下图中,12行是顶格写的一个if语句,这个if语句后面的13,14都是4个空格符后开始的,所以13,14行是12行下的一个代码块,同样的,17和18行是16行下的一个代码块。在同一个代码块里,缩进的长度必须要是一样的,不同代码块之间可以不一样,但是通常为了代码的可读性,相同层级间应该要保持一致。
通常缩进可以用tab键实现,但是使用空白符号更符合大家的习惯。当遇到写代码块时,在Python的交互式界面写程序就显得有点困难,通常使用代码编辑器来编辑代码更方便些。在notepad++中可以通过设置用多个空格代替一个tab键的方法减少多次输入空格符。
1 条件与数据类型
条件语句中if或者elif后面紧跟的是一个条件值,这个条件值可以是前面接触到各种数据类型,其中最基本的是bool型,if后如果bool型值为True,则执行if代码段的内容;其他的数据类型,int为0,float为0.0,str为’’空字符串,list,tuple,set,dict等为空时等价于条件为False,其他则等价于True,部分代码如下,完整的代码见本文github的代码例程。
if True: print('bool类型条件为真') print('www.juzicode.com') else: print('bool类型条件为假') print('WWW.JUZICODE.COM') f = 0.0 #f = 0.1 if f: print('float类型条件为真') print('www.juzicode.com') else: print('float类型条件为假') print('WWW.JUZICODE.COM') s = '' s = 'xyz' if s: print('str类型条件为真') print('www.juzicode.com') else: print('str类型条件为假') print('WWW.JUZICODE.COM') lst = list() #lst = [1,2] if lst: print('list类型条件为真') print('www.juzicode.com') else: print('list类型条件为假') print('WWW.JUZICODE.COM')
结果 | 流程控制实验:if-else bool类型条件为真 www.juzicode.com float类型条件为假 WWW.JUZICODE.COM str类型条件为真 www.juzicode.com list类型条件为假 WWW.JUZICODE.COM |
2 基本语句类型if-else
最基本的条件语句是if-else结构,注意if和else后面跟的冒号,一定要确保是英文格式的冒号,这里也是初学者经常犯错的地方:
if 条件为真: 执行代码段1 else: 执行代码段2
a = input('请输入:') if a == 'Q': print('输入的字符为Q') else: print('输入的字符不为Q')
结果 | #第1次输入A: 请输入:A 输入的字符不为Q #第2次输入Q: 请输入:Q 输入的字符为Q |
3 单个条件if
单个条件语句,if-else的精简版本,只使用if。
a = input('请输入:') if a == 'Q': print('输入的字符为Q') print('结束')
结果 | 流程控制实验:if 请输入:X 结束 #这里没有输入Q,不执行if语段的代码,直接打印结束了。 流程控制实验:if 请输入:Q 输入的字符为Q 结束 |
4 多个条件if-elif-else
在多条件语句中,首先从if后面开始判断,如果满足if后面的条件,则执行if下一层的代码段并跳出该if-elif-else代码段,否则依次向后判断elif后面的条件,如果任一条件满足,执行该elif下的代码段后,跳出本if-elif-else代码段,这其中elif是可以有多个的。
a = input('请输入:') if a == 'Q': print('输入的字符为Q') elif a == 'X': print('输入的字符为X') elif a == 'Z': print('输入的字符为Z') else: print('输入的字符不为Q,也不为X,也不为Z')
结果 | 流程控制实验:if-elif-else 请输入:U 输入的字符不为Q,也不为X,也不为Z |
示例代码: https://github.com/juzicode00/py3study/tree/master/05-condition