2.3 条件语句

条件,是日常生活中经常见到的,比如你给某个公司干活,条件是他支付薪水。所以,条件语句,也见诸各种高级编程语言。

2.3.1 if语句

if语句是由if发起的一个语句,即if发起是一个条件,在满足此条件后执行相应的内容。if这个单词就是构成条件语句的关键词。

  1. >>> a = 8
  2. >>> if a==8:
  3. ... print a
  4. ...
  5. 8

在交互模式下,简单书写一下if发起的条件语句。特别说明,在交互模式中写稍微长一点的程序,本身不值得提倡,此处只是为了演示。如果你要写大段的代码,千万不要在交互模式下写。

if a==8:这句话里面如果条件a==8返回的是True,那么就执行下面的语句。此语句最后的冒号是必需的,下面一行语句print a要有四个空格的缩进。这是Python的特点,称之为语句块。

唯恐说得不严谨,我还是引用维基百科中的叙述:

Python开发者有意让违反了缩排规则的程序不能通过编译,以此来强迫程序员养成良好的编程习惯。并且Python语言利用缩排表示语句块的开始和结束(Off-side规则),而非使用花括号或者某种关键词。增加缩排表示语句块的开始,而减少缩排则表示语句块的结束。缩排成为了语法的一部分,例如if语句。

根据PEP的规定,必须使用四个空格来表示每级缩排。使用Tab字符和其他数目的空格虽然都可以编译通过,但不符合编码规范。支持Tab字符和其他数目的空格仅仅是为兼容很旧的Python程序和某些有问题的编辑程序。

从上面的这段话中,提炼出几个必需的要求:

  • 必须要通过缩进方式来表示语句块的开始和结束。
  • 缩进用四个空格(也是必需的,别的方式或许也可以,但不提倡)。

2.3.2 if…elif…else

在进行条件判断的时候,只有if往往是不够的。看如图2-1所示的流程。

2.3 条件语句 - 图1图2-1 流程

这张图反映的是这样一个问题:

输入一个数字,并输出输入的结果。如果这个数字大于10,那么输出提示大于10;如果小于10,则输出提示小于10;如果等于10,就输出表示表扬的一句话。

从图中就已经显示出来了,对一个值的判断结果有三个分支,为了解决多分支的问题,就引入另外一种条件判断:if…elif…else语句。

基本样式结构:

  1. if 条件1:
  2. 语句块1
  3. elif 条件2:
  4. 语句块2
  5. elif 条件3
  6. 语句块3
  7. else:
  8. 语句块4

elif用于多个条件时,也可以没有。那就回归到if了。

下面就不在交互模式中写代码了。打开你的编辑器,代码实例如下:

  1. #! /usr/bin/env python
  2. #coding:utf-8
  3.  
  4. print "请输入任意一个整数数字:"
  5.  
  6. number = int(raw_input()) #通过raw_input()输入的数字是字符串
  7. #用int()将该字符串转化为整数
  8.  
  9. if number == 10:
  10. print "您输入的数字是:%d" % number
  11. print "You are SMART."
  12. elif number > 10:
  13. print "您输入的数字是:%d" % number
  14. print "This number is more than 10."
  15. elif number < 10:
  16. print "您输入的数字是:%d" % number
  17. print "This number is less than 10."
  18. else:
  19. print "Are you a human?"

raw_input()函数获得用户在界面上输入的信息,而通过它得到的虽然是数字,但它是字符串类型的,所以要转化为整数型,才能用于后面的比较。

上述程序要依据条件进行判断,在不同条件下做不同的事情。需要提醒的是:在条件中,number==10,为了阅读方便,在number和==之间最好有一个空格,同理,后面也有一个。这里的10是int类型,number所引用的对象也是int类型。

把这段程序保存成一个扩展名是.py的文件,我把它保存为num.py,进入到存储这个文件的目录,运行python num.py,就能看到程序执行结果了。下面是我执行的结果,供参考。

  1. $ python num.py
  2. 请输入任意一个整数数字:
  3. 12
  4. 您输入的数字是:12
  5. This number is more than 10.
  6.  
  7. $ python num.py
  8. 请输入任意一个整数数字:
  9. 10
  10. 您输入的数字是:10
  11. You are SMART.
  12.  
  13. $ python num.py
  14. 请输入任意一个整数数字:
  15. 9
  16. 您输入的数字是:9
  17. This number is less than 10.

在“条件”中,就是前面已经提到的各种条件运算表达式,如果是True,就执行该条件下的语句。

2.3.3 三元操作符

三元操作,是条件语句中比较简练的一种赋值方式,它的模样是这样的:

  1. >>> name = "qiwsir" if "laoqi" else "github"
  2. >>> name
  3. 'qiwsir'
  4. >>> name = 'qiwsir' if "" else "python"
  5. >>> name
  6. 'python'
  7. >>> name = "qiwsir" if "github" else ""
  8. >>> name
  9. 'qiwsir'

总结一下:A=Y if X else Z

结合前面的例子,可以看出:

  • 如果X为真,那么就执行A=Y。
  • 如果X为假,就执行A=Z。如此例:
  1. >>> x = 2
  2. >>> y = 8
  3. >>> a = "python" if x > y else "qiwsir"
  4. >>> a
  5. 'qiwsir'
  6. >>> b = "python" if x < y else "qiwsir"
  7. >>> b
  8. 'python'