zoukankan      html  css  js  c++  java
  • 课时6:Python之常用操作符

    目录:

    一、算术操作符

    二、优先级问题

    三、比较操作符

    四、逻辑操作符

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

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

    一、算术操作符

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

    >>> a = b = c = d = 10
    >>> a += 1
    >>> b -= 3
    >>> c *= 10
    >>> d /= 8
    >>> (a,b,c,d)
    (11, 7, 100, 1.25)

    在这里我们发现,即使是进行整数间的除法,但是答案是自动返回一个浮点型的精确数值,也就是说Python用真正的除法代替了地板除法。                               地板除法的概念是:计算结果取比商小的最大整型,也就是舍弃小数的意思。(注:例如3 / 2等于1)

    >>> 3 / 2
    1.5
    >>> 3 // 2
    1
    >>> 3.0 // 2
    1.0
    >>> 3.0 / 2
    1.5

    值得注意的一点是,无论是整数运算还是浮点数运算,都不会执行地板除法。需要用//。

    >>> 5%2
    1
    >>> 4%2
    0
    >>> 520 % 14
    2
    >>> 

    百分号(%)表示求余数的意思。

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

    二、优先级问题

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

    先乘除后加减,如有括号先算括号里的。

    >>> -3 * 2 + 5 / -2 -4
    -12.5
    >>> (-3) * 2 + 5 / (-2) -4
    -12.5

    Python中还有一个特殊的乘法,就是双星号(**),也称为幂运算操作符。例如3**2,双星号左侧的3称为底数,右侧的2称为指数,把这样的算式叫作3的2次幂,结果就是3*3==9.

    在使用Python进行幂运算的时候,需要注意一点是优先级问题,因为幂运算操作符和一元操作符(只有一个操作数)的优先级关系比较特别:幂运算操作符比其左侧的一元操作符优先级高,比其右侧的一元操作符优先级低:

    >>> -3 ** 2
    -9
    >>> - (3 ** 2)
    -9
    >>> 3 ** -2
    0.1111111111111111
    >>> 3 ** (-2)
    0.1111111111111111

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

    三、比较操作符

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

    比较操作符包括:<    <=    >    >=    ==    !=

    比较操作符根据表达式的值的真假返回布尔类型的值。

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

    四、逻辑操作符

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

     逻辑运算符包括: and    or    not

    and :同真为真

    or:同假为假

    not :它的作用是得到一个和操作数相反的布尔类型的值

    >>> not True
    False
    >>> not 0
    True
    >>> not 4
    False
    >>> 3 < 4 <5
    True
    >>> 3 < 4 and 4 < 5
    True

    在Python中,0解释为False,非0的数解释为True。

    Python操作符优先级:

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

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

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

     测试题:

    0. Python 的 floor 除法现在使用 “//” 实现,那 3.0 // 2.0 您目测会显示什么内容呢?
    1. a < b < c 事实上是等于?
    2. 不使用 IDLE,你可以轻松说出 5 ** -2 的值吗?
    3. 如何简单判断一个数是奇数还是偶数?
    4. 请用最快速度说出答案:not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 and 9
    5. 还记得我们上节课那个求闰年的作业吗?如果还没有学到“求余”操作,还记得用什么方法可以“委曲求全”代替“%”的功能呢?

    动动手:

    0. 请写一个程序打印出 0~100 所有的奇数。
    1. 我们说过现在的 Python 可以计算很大很大的数据,但是......真正的大数据计算可是要靠刚刚的硬件滴,不妨写一个小代码,让你的计算机为之崩溃?
    2.
    爱因斯坦曾出过这样一道有趣的数学题:有一个长阶梯,若每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;只有每步上7阶,最后刚好一阶也不剩。

    题目:请编程求解该阶梯至少有多少阶?

    答案:

    测试题答案:

    0. Python 的 floor 除法现在使用 “//” 实现,那 3.0 // 2.0 您目测会显示什么内容呢

    如果回答是 1.5 那么很遗憾,您受到 C 语言的影响比较大,Python 这里会义无反顾地执行 floor 除法原则,答案是:1.0

    1. a < b < c 事实上是等于?

    (a < b) and (b < c)

    2. 不使用 IDLE,你可以轻松说出 5 ** -2 的值吗?
    0.04,也就是 1/25
    幂运算操作符比其左侧的一元操作符优先级高,比其右侧的一元操作符优先级低。

    3. 如何简单判断一个数是奇数还是偶数?
    使用求余可以简单得到答案:能被 2 整除为偶数,所以 x % 2 == 0,否则为奇数。

    4. 请用最快速度说出答案:not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 and 9
    如果你的回答是 0,那么小甲鱼很开心你中招了!
    答案是:4
    not or and 的优先级是不同的:not > and > or
    我们按照优先级给它们加上括号:(not 1) or (0 and 1) or (3 and 4) or (5 and 6) or (7 and 8 and 9)
    == 0 or 0 or 4 or 6 or 9
    == 4
    为啥是 4?
    大家还记得第四讲作业提到的“短路逻辑”吗?3 and 4 == 4,而 3 or 4 == 3。
    所以答案是:4
    温馨提示:为了更好的表达你的程序,小甲鱼再次呼吁有些括号还是不能省下的,毕竟不是所有程序员都跟你一样都将优先级烂透于心的。

    5. 还记得我们上节课那个求闰年的作业吗?如果还没有学到“求余”操作,还记得用什么方法可以“委曲求全”代替“%”的功能呢?
    因为上节课我们还没有教大家“求余”的操作,所以小甲鱼使用了“if year/400 == int(year/400)”这样的方式来“委曲求全”。

    动动手答案:

    0. 请写一个程序打印出 0~100 所有的奇数。

    i = 0
    while i <= 100:
        if i % 2 != 0:
            print(i, end=' ')
            i += 1
        else:
            i += 1

     或者:

    i = 0
    while i <= 100:
          if i % 2 != 0:
                print(i,end=" ")
          i+=1

    1. 我们说过现在的 Python 可以计算很大很大的数据,但是......真正的大数据计算可是要靠刚刚的硬件滴,不妨写一个小代码,让你的计算机为之崩溃?

    print(2 ** 2 ** 32)
    # 一般很多机子都会在一会儿之后:Memory Overflow,内存不够用。
    # 设计到幂操作,结果都是惊人滴。

    2. 题目:请编程求解该阶梯至少有多少阶?

    x = 7
    i = 1
    flag = 0
    while i <= 100: if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5): flag = 1 else: x = 7 * (i+1) # 根据题意,x一定是7的整数倍,所以每次乘以7 i += 1 if flag == 1: print('阶梯数是:', x) else: print('在程序限定的范围内找不到答案!')
    爱笑的男孩运气都不会差
  • 相关阅读:
    Python 爬虫入门(一)
    Dubbo、Zookeeper集群搭建及Rose使用心得(二)
    Dubbo、Zookeeper集群搭建及Rose使用心得(一)
    JAVA 加密算法初探DES&AES
    Android 蓝牙模块基础操作
    IntelliJ IDEA 使用随笔
    Maven+SSM框架实现简单的增删改查
    记录一次bug解决过程:数据迁移
    SSM框架+Plupload实现断点续传(Spring+SpringMVC+MyBatis+Plupload)
    JAVA开发环境
  • 原文地址:https://www.cnblogs.com/DC0307/p/9373310.html
Copyright © 2011-2022 走看看