• python学习笔记(4)-基本数据类型-数字类型及操作


    大学mooc 北京理工大学 python语言程序设计课程学习笔记

    一、整数类型

    可正可负,没有取值范围的限制(这个与c不同,c要考虑数据类型的存储空间)。如pow(x,y),计算x的y次方,pow(2,1000),结果无限制。

    4种进制表示形式:十进制:99,-28,1010    二进制:以0b或者0B开头:0b100,-0B101  八进制:以0o或者0O开头,0o123,-0O456  十六进制:以0x或者0X开头,0x9a, -0Xf9

    二、浮点类型

    带有小数点和小数的数字,浮点数取值范围和小数经度都存在限制,但常规计算可忽略。浮点数间的运算存在不确定尾数,不属于bug,与计算机的机制有关系。如:

    >>> 0.1+0.2
    0.30000000000000004
    计算机用二进制表示小数,可以无限接近,但不完全相同,0.1+0.2结果会无限接近0.3,但是有一个不确定的尾数

    用作判断时,有如下结果

    >>> 0.1+0.2 == 0.3
    False

    可以使用round函数,round(x,d):对x四舍五入,d是小数截取位数。

    >>> round(0.1+0.2, 1) == 0.3
    True

    浮点数间运算及比较时,需要用round函数辅助。

    浮点数的科学计数法表示:使用e或E作为幂的符号,4.3e-3 值为0.0043   9.6E5 为960000.0

    三、数值运算操作符

    x+y,x-y,x*y,x/y,x//y,x%y,+x,-y,x**y  

    /  与C不同,x/y产生的结果为浮点数,整数除使用 //,取余% ,x**y是x的y次幂,与pow(x,y),相同,其中y可以为小数。

    >>> 10/2
    5.0
    >>> 10/3
    3.3333333333333335
    >>> 10//3
    3
    >>> 10%3
    1
    >>> 2**2
    4
    >>> 2**0.5
    1.4142135623730951

    二元操作符有对应的增强赋值操作符,x+=y,x-=y等。

    与C不同,python中,不同的数值类型是可以混合运算的,结果为“最宽”类型,三种类型存在一种逐渐“扩展”和“变宽”的关系:整数-》浮点数-》复数。

    >>> 12+1.3
    13.3
    >>> 123+5.0
    128.0
    >>> 

    四、数值运算函数

    abs(x):绝对值  divmod(x,y):商余,(x//y,x%y),同时输出商和余数。

    pow(x,y[,z]):幂余,注意[]表示这个参数可以省略,(x**y)%z,比如想要运算3的pow(3,99)次方的最后四位,就可以表示为pow(3,pow(3,99),10000),结果为4587,为何有这个z参数呢,pow(3,pow(3,99))这个值非常大,在普通计算机中很难得到结果,已经超出了计算机的内存范围,有个取余的话,这个结果会很快得出。

    >>> abs(-100)
    100
    >>> divmod(10,3)
    (3, 1)
    >>> pow(3,pow(3,99),10000)
    4587

    round(x[,d]):四舍五入,d是保留小数位数,默认为0.

    max(x1,x2,....,xn):最大值,返回这些数中的最大值,n是不受限制的。这个函数可比C好多了,如果是C要写好多代码,还有懂一些算法才行,在python中,一个函数搞定。

    min(x1,x2,....,xn):最小值

    >>> max(45,1.3,56,1.2)
    56
    >>> min(1.0,1.4,2.0,3)
    1.0

    int(x):将x变成整数,舍弃小数部分,不四舍五入。如果是字符串,也可以转换为整数。

    >>> int(123.456)
    123
    >>> int("123")
    123

    float(x):将x变为浮点数,增加小数部分。

    >>> float(12)
    12.0
    >>> float("123")
    123.0

    五、编程练习

    365天工作日进步0.01,休息日每天退步0.01,一年累计下来能力值为多少?

    #DayDayup.py
    dayup = 0.1
    dayfactor = 0.01
    for i in range(365):
         if i % 7 in [6,0]:
              dayup = dayup * (1 - dayfactor)
         else:
              dayup = dayup * (1 + dayfactor)
    print("工作日的力量:{: .2f}".format(dayup))

    365每天进步0.01,一年累计下来是原来的37.87倍,那么休息日休息两天,工作日需要努力多少,才能与每天进步的人一年累计的力量相同呢?

    #DayDayup.py
    def dayUp(df):
         dayup = 1
         for i in range(365):
              if i % 7 in [6,0]:
                   dayup = dayup * (1 - 0.01)
              else:
                   dayup = dayup * (1 + df)
         return dayup
    
    dayfactor = 0.01
    while dayUp(dayfactor) < 37.78:
         dayfactor += 0.01
    print("工作日的努力参数为:{: .4f}".format(dayfactor))

    六、结语

    GRIT:perseverance and passion for long-term goals

    1.01**365 = 37.78       1.019**365 = 962.89

    GRIT:坚毅,对长期目标的持续激情与持久耐力,国际上很多学者都在研究GRIT,目前认为GRIT是获得成功的最重要的因素之一。

  • 相关阅读:
    JavaScript表单编程
    JavaScript事件模型
    DOM总结
    CSS3 媒体查询响应式布局
    BOM总结
    JS实现文字图片无缝滚动
    深入理解jQuery事件绑定机制
    被你忽略的jQuery常用方法“特异功能”
    关于BOM的学习总结
    Hello,World!
  • 原文地址:https://www.cnblogs.com/xingmuxin/p/8761394.html
Copyright © 2020-2023  润新知