zoukankan      html  css  js  c++  java
  • 006 Python的操作符

      算术操作符:
    +    -    *    /       %    **    //
     如
    >>> a = 5
    >>> a = a + 3
    >>> a
    8
    等同于
    >>> a = 5
    >>> a += 3
    >>> a
    8
    >>>   
    又如
    >>> a = b = c = d = 10
    >>> a += 1
    >>> b -= 3
    >>> c  *= 10
    >>> d  /= 8    #这里的除于/号在python3里面已经可以精确得出浮点数的结果。如果需要整数,则需要用//号
    >>> a
    11
    >>> b
    7
    >>> c
    100
    >>> d
    1.25
    >>> 
     //使用:
    >>> 10 // 8
    1
    >>> 3.0 // 2
    1.0
    >>>  

    %是指求余数的意思 
    >>> 5 % 2
    1
    >>> 11 % 2
    1
    >>> 16 % 6
    4
    >>> 
      
    **指幂运算操作符
    >>> 3 ** 2
    9
    >>> 3 ** 5
    243
    >>> 

    优先级问题:
    当多个运算符同时出现在一个表达式的时候,严格按照优先级进行运算。
    先乘除后加减,遇到括号优先算。

    >>> -3 * 2 + 5 / -2 - 4
    -12.5
    >>> ((-3) * 2) + (5 / (-2)) - 4
    -12.5
    >>> 
    注意:括号是必要的但不是必须。在必要的表达式加上括号,便于程序维护。 
     
    幂操作符比其左侧的一元操作符优先级高,比右侧的一元操作符优先级低

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

    比较操作符
     <    <=    >    >=    ==    !=
    逻辑操作符
    and       or        not
    and 指当它的左侧和右侧同时为真(True)的时候,结果才为真(True)
    or指左边或者右边的任意一边为真(True)的时候,结果就为真(True),当两边同时为假(False)的时候,结果才为假(False)
    not是一元操作符,只有一个操作数,把它的操作数取一个相反的布尔类型值。

    >>> not True
    False
    >>> not False
    True
    >>> not 0#这里的0表示为False
    True
    >>> not 4#所有非零的数字表示为True
    False
    >>>
     优先级问题:
     幂运算**    正负号 +X  -X     算术运算符* /  // + -         比较操作符 < > <= >= == !=    逻辑运算符not and or 
     
    测试题:
    0. Python 的 floor 除法现在使用 “//” 实现,那 3.0 // 2.0 您目测会显示什么内容呢?
     
     答:1.0
    1. a < b < c 事实上是等于?
    答:(a < b) and (b < c) 
     
    2. 不使用 IDLE,你可以轻松说出 5 ** -2 的值吗?
    答:5 ** -2等于5的-2次方,即0.04(第一次居然算成-25,中学数学白学了。)
    3. 如何简单判断一个数是奇数还是偶数?
    答,看看能否被2整除。
    使用求余可以简单得到答案:能被 2 整除为偶数,所以 x % 2 == 0,否则为奇数。
    表达式如下 
     
    = input('')
    num = int(a)
    if num/2 == int (num/2):
        print(a + '')
    else:
        print(a + ''
    或者 
    = input('')
    = int(a)
    if b%2 == 0:
        print(a + '')
    else:
        print(a + '')



     
     加入一个非数字判断:
     
    =input('')
    while not a.isdigit():
        a = input ('')#这里判断是否为数字,如果返回False,则回到while继续循环,如果返回True,则执行下一句
    = int(a)
    if b%2 ==0:
        print(a + '')
    else:
        print(a + ''

     4. 请用最快速度说出答案:not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 and 9
    答:4,直接在python运算结果。自己算晕了。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 所有的奇数。 
    教程参考答案:
     慢慢消化。
    = 0
    while i <= 100:
        if i % 2 != 0:#如果要打印全部偶数,则改为i%2 != 0,如果要打印全部能被3整除的数字,则改为i%3 == 0,以此类推。
            print(i, end=' ')
            i += 1
        else:#如果这里没有else,则程序执行完上一句后等待,因为打印完第一个数后没指令,也没结束if的循环。
            i += 1
    我自己琢磨出的答案 (貌似还不够智能。)
    = 50
    =1
    while a:
        print(i)
        i = i + 2
        a = a - 1
     思路:100以内的奇数一共有50个,每个奇数之间相差2。上节课作业有做到这个效果如下: 
    >>> 
    5
    1
    2
    3
    4
    5
    >>> 
     源代码如下 
    temp = input ('')
    num = int (temp)
    = 1
    while num:
        print(i)
        i = i + 1
        num = num - 1
     根据这个源代码修改而成。 

    1. 我们说过现在的 Python 可以计算很大很大的数据,但是......真正的大数据计算可是要靠刚刚的硬件滴,不妨写一个小代码,让你的计算机为之崩溃?
    不会
    print(2 ** 2 ** 32)
    # 一般很多机子都会在一会儿之后:Memory Overflow,内存不够用。
    # 设计到幂操作,结果都是惊人滴。
    2. 爱因斯坦曾出过这样一道有趣的数学题:有一个长阶梯,若每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;只有每步上7阶,最后刚好一阶也不剩。
     
    题目:请编程求解该阶梯至少有多少阶?  
    不会啊!(存底,慢慢消化。)
     
    = 7
    = 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)
        i += 1
     
    if flag == 1:
        print('', x)
    else:
        print('')
     
    在论坛看到有人这样写,更简洁
     
    = 1
    while (i%2!=1 or i%3!=2 or i%5!=4 or i%6!=5 or i%7!=0):
        i += 1
    print(i)
  • 相关阅读:
    C# ConfigMan.cs
    C# 反序列化JSON
    C#求数组最大值或最大值位置索引
    C#获取DataGridView数据源DataSource类型
    C#动态添加DataGridView列和行
    C# WinForm 检测文件是否被占用
    C#开源组件NPOI处理Excel导入DataTable数据至Sheet
    C# WinForm 扩展指定列宽适应DataGridView显示行数(二)
    C# WinForm 扩展指定列宽适应DataGridView显示行数
    VFP9 对 SqlServer Image字段的图片存取处理
  • 原文地址:https://www.cnblogs.com/fishdm/p/3572975.html
Copyright © 2011-2022 走看看