返回宝典

选择语句

上一节 下一节

选择语句中别忘了条件表达式后的冒号;也别忘了选择语句中代码块的空格缩进,请以4个空格为标准。


选择语句 - if语句

选择语句就是通过条件判断,来控制程序的运行流。Python中的选择语句就是if、else、elif。

语法格式1

if 条件:
    代码块(条件成立,才执行)


语法格式2

if 条件:
    代码块(条件成立,才执行)
else:
    代码块(条件不成立,才执行)


语法格式3

if 条件1:
    代码块(条件1成立,才执行)
elif 条件2:
    代码块(条件1不成立,条件2成立,才执行)
elif 条件3:
    代码块(条件1、条件2都不成立,条件3成立,才执行)
else:
    代码块(条件1、条件2、条件3都不成立,才执行)

elif语句是“else if”的缩写;elif语句的使用个数可根据实际需求来定;该语句有点类似其他编程语言中的case语句,但是比case更好,其完美地与if/else语句进行结合拓展,实属经典。


示例

空谈误学,看例子:

>>> a = 72
>>> if a % 2 == 0:
...     print "This is an even number."
... 
This is an even number.

运行一下


再看一个条件表达式不成立的示例:

>>> a = 73
>>> if a % 2 == 0:
...     print "This is an even number."
... 

运行一下


上面的例子中,条件表达式不成立,则代码块不被执行;下面再看一个条件不成立,执行else语句内的代码块的示例:

>>> a = 73
>>> if a % 2 == 0:
...     print "This is an even number."
... else:
...     print "wow!!!"
...     print "This is an odd number."
... 
wow!!!
This is an odd number.

运行一下


下面再看一个通过elif语句构建具有复杂的条件判断的选择语句:

>>> a = 72
>>> if a > 100:
...     print "当前这个数大于100"
... elif a > 90:
...     print "当前这个数大于90且小于等于100"
... elif a > 80:
...     print "当前这个数大于80且小于等于90"
... else:
...     print "当前这个数小于等于80"
... 
当前这个数小于等于80

运行一下

嵌套的if语句

选择语句的代码块中还可以继续嵌套各类语句,包括if语句。示例如下:

>>> a = 72
>>> if a % 2 == 0:
...     print "这是一个偶数"
...     if a > 100:
...         print "当前这个数大于100"
...     elif a > 80:
...         print "当前这个数大于80且小于等于100"
...     else:
...         print "当前这个数小于等于80"
... else:
...     print "这是一个奇数"
... 
这是一个偶数
当前这个数小于等于80

运行一下

将条件保存成变量

如果if语句中的条件表达式过长或者过于复杂,可考虑把条件表达式返回的值保存早变量中去;一则阅读起来更美观;二则可以通过变量名对该条件表达式进行描述,进一步提高程序的可读性。

>>> score_math = 97
>>> score_english = 98
>>> score_physics = 99
>>> score_criminology = 100
>>> 
>>> all_good = ( score_math > 90 ) and ( score_english > 90 ) and ( score_physics > 90 ) and ( score_criminology > 90 )
>>> 
>>> if all_good:
...     print "666! All scores are very good!"
... else:
...     print "hehe"
... 
666! All scores are very good!

运行一下

布尔运算的延伸:整数、浮点型、字符串

在布尔运算中,对于整数和浮点型来说,除了0和0.0是代表False,其它数字的都代表True。

>>> not 0
True
>>> not 0.0
True
>>> not 0.1
False
>>> not 419
False

运行一下


在布尔运算中,对于字符串类型(包括str类型和unicode类型),除了空字符串代表False,其它的字符串都代表True。

>>> not ""
True
>>> not "zhuanfou.com"
False

运行一下


Python中字符串也可以进行比较大小,每个字符都有一个ASCII码值,比如字符z的ASCII码值是122,字符h的ASCII码值是104,空格的ASCII码值是32,字符之间的比较就是比较ASCII码值的大小;而字符串之间的比较,则是将两个字符串的第一个字符进行比较;若两者相等,再比较双方的第二个字符;若第二个还相等则再比较第三个,依次类推。如果其中一个字符串比完了,之前依然都是相等,则还有字符可比的那个字符串更大。

>>> "zbc" < "abs"
False
>>> "abc" < "abs"
True
>>> "abc" < "abcd"
True

运行一下


Python中求字符的ASCII码值可用内置函数ord,详情可以查看这里


下面要介绍的这些都比较偏,不建议把这些运用到实践中,实现功能的方式很多种,尽量避免这些晦涩的方式。这里之所以介绍,主要是为了更加深入学习python语言。

如下所示,下例整型之间关于and的布尔运算:如果转换成True和False进行布尔运算最终得到的是False,则从左到右返回代表条件不成立的第一个数字。若表达式最终成立,则返回最后一个数字即可。

>>> 1 and 0
0
>>> 0 and 1
0
>>> 7 and 2
2


如下所示是整型、浮点型、布尔型混合的关于or的布尔运算,其实逻辑很简单,每个表达式,从左往右,只要找到一个布尔运算中等价为True的值,就立即返回这个值并结束。

>>> 1 or 0
1
>>> 0 or 1
1
>>> True or 0
True
>>> False or 3.6
3.6
>>> False or 0
0

选择语句

上一节 下一节