008,分支和循环2

008,分支和循环2
  判断和循环
例子:按照100分制,90分以上成绩为A,80-90为B,60-80为C,60以下为D,写一个程序,当用户输入分数,自动转换为ABCD形式的打印。
 第一个方案: 
score = int(input('请输入一个分数:'))
if 100 >= score >= 90:
    print('A')
if 90 > score >= 80:
    print('B')
if 80 > score >= 60:
    print('C')
if 60 > score >= 0:
    print('D')
if score < 0 or score > 100:
    print('输入错误')
 第二种方法: 
score = int(input('请输入你的分数:'))
if 100>= score >= 90:
    print('A')
else:
    if 90 > score >= 80:
        print('B')
    else:
        if 80 > score >= 60:
            print('C')
        else:
            if 60 > score >= 0:
                print('D')
            else:
                print('输入错误。')
 第三种方法: 
score = int(input('请输入你的分数:'))
if 100>= score >= 90:
    print('A')
elif 90 > score >= 80:
    print('B')
elif 80 > score >= 60:
    print('C')
elif 60 > score >= 0:
    print('D')
else:
    print('输入错误。')
 elif =else if 的缩写
 
python可以有效避免“悬挂else”
 何谓“悬挂else”?例子: 
if (hi > 2)
    if (hi > 7)
        printf("好棒好棒");
else
    printf("切~")
 按照C语言的就地匹配原则,else会跟第二个if匹配,容易出bug
python强制使用正确的缩进。 

条件表达式 (三元操作符)如: 
x,y = 4,5
if x < y:
    small = x
else:
    small = y
 可以改进为: 
small = x if x < y else y
 语法:x if 条件 else y
 
断言(assert)
assert这个关键字我们称之为“断言”,当这个关键字后边的条件为假的时候,程序自动崩溃并抛出AssertionError的异常,如: 
>>> assert 3 > 4
Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    assert 3 > 4
AssertionError
>>> 
 一般来说,我们可以用它在程序中置入检查点,当需要确保程序中的某个条件一定为真才能让程序正常工作的话,assert关键字就非常有用了。

测试题:
   
0. if not (money < 100): 上边这行代码相当于?
答:if (money >= 100)
 1. assert 的作用是什么?
答:检查条件是否为真。
2. 假设有 x = 1,y = 2,z = 3,请问如何快速将三个变量的值互相交换? 
答: x=z-y,y=z-x,z=x+y   ?参考答案:x, y, z = z, y, x  (WTF,啥意思?!)
 3. 猜猜 (x < y and [x] or [y])[0] 实现什么样的功能?
答:不懂
参考答案:这其实是 Python 的作者还没有为 Python 加入三元操作符之前,Python 社区的小伙伴们灵活的使用 and 和 or  搭配来实现三元操作符的功能,这里边有涉及到列表和切片的知识,这部分知识很快就会讲解,迫不及待的朋友可以先稍微预习下。
 4. 你听说过成员资格运算符吗?
答:百度之:集合成员资格运算符:IN ,NOT IN.    IN 表示在集合中查询。NOT IN表示不在集合中查询。
参考答案:Python 有一个成员资格运算符:in,用于检查一个值是否在序列中,如果在序列中返回 True,否则返回 False。
  
 动动手:  
0. 视频中小甲鱼使用 if elif else 在大多数情况下效率要比全部使用 if 要高,但根据一般的统计规律,一个班的成绩一般服从正态分布,也就是说平均成绩一般集中在 70~80 分之间,因此根据统计规律,我们还可以改进下程序以提高效率。  题目备忘:按照100分制,90分以上成绩为A,80到90为B,60到80为C,60以下为D,写一个程序,当用户输入分数,自动转换为ABCD的形式打印。  
score = int(input('请输入你的分数:'))
if 80 > score >= 60:
    print('C')
elif 90 > score >= 80:
    print('B')
elif 60> score >= 0:
    print('D)
elif 100 > score >= 90:
    print('A')
else:
    print('输入错误。')
 其实就是把概率高的条件放在第一个if语句中。

1. Python 的作者在很长一段时间不肯加入三元操作符就是怕跟C语言一样搞出国际乱码大赛,蛋疼的复杂度让初学者望而生畏,不过,如果你一旦搞清楚了三元操作符的使用技巧,或许一些比较复杂的问题反而迎刃而解。
请将以下代码修改为三元操作符实现:
x, y, z = 6, 5, 4
if x < y:
    small = x
    if z < small:
        small = z
elif y < z:
    small = y
else:
    small = z
 答:small = z if z < x if x < y or y if y < z else z 
参考答案:small = x if (x < y and x < z) else (y if y < z else z)

posted @ 2014-02-28 10:15  小丑戌  阅读(579)  评论(0编辑  收藏  举报