shivency

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

书的章节如此,实际上是讲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中没报错,就是没输出而已)。

posted on 2013-06-15 16:41  shivency  阅读(208)  评论(0编辑  收藏  举报