zoukankan      html  css  js  c++  java
  • 第006讲:Python之常用操作符

    一 python的常用操作符

    1 算术操作符:加+ 减 -  乘*  除 /  取余%  幂运算**  (floor 除法,被小甲鱼称为地板除)// 

    注意:python3中整数间做除法(/)运算会得到精确的运算结果,不会像其他语言一样因为数据类型的限制而舍弃掉小数部分

               为了像其它语言一样,对整数间除法的运算结果做向下取整的操作,python3引入了(//),不过该操作符对浮点数的运算结果也会进行向下取整的操作,但其返回结果仍旧是浮点数。

        eg:10 // 8 =1   ;       3.0 // 2 =1.0   ;        3 / 2 = 1.5

    2 比较操作符: 小于<  小于等于<=  大于>  大于等于>=  等于 ==   不等于!=

    3 逻辑操作符:与and  或or   非not   

       eg:3<4<5 = True (该语句实际上被解释为(3<4)and(4<5),其它语言里面是不允许这么写的)

    4 扩展:python中没有++和--运算符,与python语法中的变量的定义方式有关,具体见连接:https://blog.csdn.net/somehow1002/article/details/73744626

    二  优先级问题

          

    • 从高到低:幂运算>正负号>算术操作符(先乘除后加减)>比较操作符>逻辑运算符(not>and>or)
    • 幂运算操作符比其左侧的一元操作符优先级高,比其右侧的一元操作符优先级低; eg  -3 ** 2 = -9   (即- (3 ** 2));4 ** -2 =0.0625  (即 4 ** (-2))

    三  操作符分类

    1  一元(单目)操作符:一个操作数   取反-

    2  二元(双目)操作符:两个操作数  + - *  /  **  //    比较操作符   逻辑操作符

    四 课后作业

    (一) 测试题答案

    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      # 我开开心心的写了一个1
    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

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

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

    你猜猜为何 print( (2 ** 2) ** 32) 就可以计算出结果呢?

    因为幂运算是从右向左运算的

    2. 题目:请编程求解该阶梯至少有多少阶? ——我自己不会做

    爱因斯坦曾出过这样一道有趣的数学题:有一个长阶梯,若每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;只有每步上7阶,最后刚好一阶也不剩。

    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('在程序限定的范围内找不到答案!')

     

  • 相关阅读:
    C语言PRO2
    pro5
    自我介绍
    李喆第5次作业
    李喆的作业
    一个队列类的实现(比delphi自带的速度快70倍)
    关于 IHTMLDocument4 在 Delphi7.0 中不能编译的的解决方法
    高吞吐量的一个日志函数类_用于IOCP (Delphi)
    PostThreadMessage在线程中应用(以多线程网站数据采集为例)
    微软企业库5 加密篇
  • 原文地址:https://www.cnblogs.com/luoxun/p/13212114.html
Copyright © 2011-2022 走看看