选择语句中别忘了条件表达式后的冒号;也别忘了选择语句中代码块的空格缩进,请以4个空格为标准。
选择语句就是通过条件判断,来控制程序的运行流。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语句。示例如下:
>>> 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