zoukankan      html  css  js  c++  java
  • 课时8:了不起的分支和循环2

    目录:
    一、课堂小练习

    二、"悬挂else"

    三、条件表达式(三元操作符)

    四、断言

    五、课时08课后习题及答案

    ******************

    一、课堂小练习

    ******************

    现在来考考大家,按照100分制,90分以上成绩为A,80到90为B,60到80为C,60以下为D,写一个程序,当用户输入分数,自动转换为ABCD的形式打印。

    #p4_1.py
    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('输入错误!')
    #p4_2.py
    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('输入错误!')
    #p4_3.py
    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('输入错误!')

    结果分析:假如输入的分数是98,按照第一种方法是第一次就判断成功,接着打印字母A,但接着会进行第二、三、四、五次判断,然后这些都不符合,退出程序。若采用第二、三种方法,那么在第一次判断成立并打印字母A后,接着不需要再进行任何判断就推出程序。可见虽然是很简单的例子,但就输入98来说,假设第一次判断会消耗一个CPU的时间,那么第一种方法比第二和第三种方法多消耗了400%的时间!!!

    *****************

    二、"悬挂else"

    *****************

    什么叫“悬挂else”?
    我们举个例子,初学C语言的朋友可能很容易被以下代码欺骗:

    if ( hi > 2 )
        if( hi > 7 )
            printf(“好棒!好棒!”);
    else
        printf(“切~”);

    在这个例子中,虽然else很想和外层的if匹配,但事实上按照C语言的就近匹配原则这个else是属于内层if的。在Python中强制使用缩进,所以在Python中制造出悬挂else的问题是不可能的。

    *********************************

    三、条件表达式(三元操作符)

    *********************************

    有了这个三元操作符的条件表达式,你可以使用一条语句来完成以下的条件判断和赋值操作:

    x, y = 4, 5
    if x < y:
        small = x
    else:
        small = y

    例子可以改进为:

    small = x if x < y else y

    三元操作符语法:

    a = x if 条件 else y (表示当条件为True的时候,a的值赋值为x,否则赋值为y。)

    **********

    四、断言

    **********

     assert这个关键字我们称之为“断言”,当这个关键字后边的条件为假的时候,程序自动崩溃并抛出AssertionError的异常。

    举个例子:

    >>> assert 3<4
    >>> assert 3>4
    Traceback (most recent call last):
      File "<pyshell#1>", line 1, in <module>
        assert 3>4
    AssertionError

    一般来说我们可以用Ta在程序中置入检查点,当需要确保程序中的某个条件一定为真才能让程序正常工作的话,assert关键字就非常有用了。

    *******************************

    五、课时08课后习题及答案

    *******************************

    测试题:
    0. if not (money < 100): 上边这行代码相当于?
    1. assert 的作用是什么?
    2. 假设有 x = 1,y = 2,z = 3,请问如何快速将三个变量的值互相交换?
    3. 猜猜 (x < y and [x] or [y])[0] 实现什么样的功能?
    4. 你听说过成员资格运算符吗?

    动动手:
    0. 视频中小甲鱼使用 if elif else 在大多数情况下效率要比全部使用 if 要高,但根据一般的统计规律,一个班的成绩一般服从正态分布,也就是说平均成绩一般集中在 70~80 分之间,因此根据统计规律,我们还可以改进下程序以提高效率。

    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

    答案:

    测试题答案:

    0. if not (money < 100): 这行代码相当于?
    if money >= 100:
     
    1. assert 的作用是什么? 
    assert这个关键字我们称之为“断言”,当这个关键字后边的条件为假的时候,程序自动崩溃并抛出AssertionError的异常。
    什么情况下我们会需要这样的代码呢?当我们在测试程序的时候就很好用,因为与其让错误的条件导致程序今后莫名其妙地崩溃,不如在错误条件出现的那一瞬间我们实现“自爆”。
    一般来说我们可以用Ta在程序中置入检查点,当需要确保程序中的某个条件一定为真才能让程序正常工作的话,assert关键字就非常有用了。
     
    2. 假设有 x = 1,y = 2,z = 3,请问如何快速将三个变量的值互相交换? 
    x, y, z = z, y, x
       
    3. 猜猜 (x < y and [x] or [y])[0] 实现什么样的功能?
    这其实是 Python 的作者还没有为 Python 加入三元操作符之前,Python 社区的小伙伴们灵活的使用 and 和 or  搭配来实现三元操作符的功能,这里边有涉及到列表和切片的知识,这部分知识很快就会讲解,迫不及待的朋友可以先稍微预习下。
     
    4. 你听说过成员资格运算符吗?
    Python 有一个成员资格运算符:in,用于检查一个值是否在序列中,如果在序列中返回 True,否则返回 False。
    >>> name = '小甲鱼'
    >>> '' in name
    True
    >>> '肥鱼' in name
    False

    动动手答案

    0. 视频中小甲鱼使用 if elif else 在大多数情况下效率要比全部使用 if 要高,但根据一般的统计规律,一个班的成绩一般服从正态分布,也就是说平均成绩一般集中在 70~80 分之间,因此根据统计规律,我们还可以改进下程序以提高效率。

    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('输入错误!')
    复制代码

    1. Python 的作者在很长一段时间不肯加入三元操作符就是怕跟C语言一样搞出国际乱码大赛,蛋疼的复杂度让初学者望而生畏,不过,如果你一旦搞清楚了三元操作符的使用技巧,或许一些比较复杂的问题反而迎刃而解。

    small = x if (x < y and x < z) else (y if y < z else z)
    爱笑的男孩运气都不会差
  • 相关阅读:
    避免使用HttpClient的系统代理
    C#使用ILGenerator动态生成函数
    leveldb和fork的初始化顺序
    模拟阻尼运动
    [c++]printf的编译器静态检测
    Git Submodule管理项目子模块
    redis 读写分离主从服务类借鉴
    git pull 冲突
    git log 查看提交记录
    自带单例模式的redis类
  • 原文地址:https://www.cnblogs.com/DC0307/p/9378356.html
Copyright © 2011-2022 走看看