书的章节如此,实际上是讲bool。
经过数电的洗礼,这种1和0的逻辑运算对我来说不怎么费解(估计对大部分人都一样)。
简要摘几点。
1、不要写奇葩的表达式
1 a = 3 < 5 != True #actually a = (3 < 5) and (5 != True) 2 b = 3 < 5 != False #actually b = (3 < 5) and (5 != False) 3 c = (3 < 5) != True 4 d = (3 < 5) != False 5 6 print a #True 7 print b #True 8 print c #False 9 print d #True
所以不要用会产生歧义的表达式。
2、一个奇淫技巧
1 result = test and first or second 2 3 if test: 4 result = first 5 else: 6 result = second
这两个表达是一样的,我只是觉得这个挺好玩的,当然不要随便乱用。
3、可读性
既然涉及到bool,难免会接触到if,if的语法挺简单的,不赘述。
这里贴一个书上的代码,讲写代码的可读性的。
version 1:
1 if age < 45: 2 if bmi < 22.0: 3 risk = 'low' 4 else: 5 risk = 'medium' 6 else: 7 if bmi < 22.0: 8 risk = 'medium' 9 else: 10 risk = 'high'
嗯,当然,书上是根据表格写的,但阅读代码的人,不一定会看到这个表格,我们在这里只能单纯地用经验来猜测。
version 2:
1 young = age < 45 2 slim = bmi < 22.0 3 4 if young: 5 if slim: 6 risk = 'low' 7 else: 8 risk = 'medium' 9 else: 10 if slim: 11 risk = 'medium' 12 else: 13 risk = 'high'
但愿这个版本让你感到稍微舒服一些。
version 3:
1 young = age < 45 2 slim = bmi < 22.0 3 4 if young and slim: 5 risk = 'low' 6 elif young and not slim: 7 risk = 'medium' 8 elif not young and slim: 9 risk = 'mediun' 10 elif not young and not slim: 11 risk = 'high'
习题:
1、
1 a = (4 != 4.0) 2 print a #False
很明显,整数和小数之间无法比较。
2、
1 #ph = raw_input("come on:") 2 ph = float(raw_input("come on:")) 3 if ph < 7.0: 4 print "%s is aci." %ph 5 elif ph < 3.0: 6 print "%s is very aci."%(ph)
之后有一题,问假如使用line 1而注释掉line 2,会发生什么,结果显而易见,无法比较,甚至会报错(我的pydev中没报错,就是没输出而已)。