数字类型及操作

基本数据类型

一、数字类型及操作:

1.整数类型:无限范围及四种进制表示

    与数学中整数概念一致,可正可负,没有取值范围限制

    四种进制表示形式:

            十进制:99,20021

            二进制:以0b或者0B开头

            八进制:以0o或0O开头

            十六进制:以0x或者0X开头

2.浮点数类型:浮点数间运算存在不确定尾数,并不是bug。取值范围和精度基本无限制。

二进制表示小数,可以无限接近,但不完全相同。

round(x,d)对x进行4舍5入,d是小数截取位数。

<a>e<b>表示a*b10

3.复数类型:与数学中复数的概念一致。

z = 123e-4+5.6e+89j

用z.real()获得实部,z.imag()获得虚部。

数值运算操作符:

类型见可进行混合运算,生成结果为‘最宽’类型   整数->浮点数->复数

数字类型及操作

赋值运算:

数字类型及操作

比较运算:

数字类型及操作

逻辑运算:

数字类型及操作

成员运算:

数字类型及操作


二、数值运算函数

abs(x):              绝对值,返回x的绝对值
divmod(x,y):         返回(x//y,x%y),即商、余
pow(x,y[,z]):
round(x[,d]):        四舍五入,d是保留小数位数,默认值为0
max(x1,x2,...,xn)    返回最大值
min(x1,x2,...,xn)    返回最小值

类型转换:
int(x):              将x变成整数,舍弃小数部分
float(x):            将x变成浮点数,增加小数部分
complex(x):         将x变成复数,增加虚数部分

三、天天向上的力量分析

'''
问题1:千分之一的力量
Q1 : 一年365天,每天进步千分之一,累计进步多少呢?
     一年365天,每天退步千分之一,累计还剩下多少?
'''
dayup = pow(1.001,365)
daydown = pow(0.999,365)
print("向上:{:.2f},向下:{:.2f}".format(dayup,daydown))

'''
Q2: 一年365天,每天进步千分之五或百分之一
    一年365天,每天退步千分之五或百分之一
'''

def Q2(vars,days):
    up = pow(1+vars,days)
    down = pow(1-vars,days)
    print("向上:{:.2f},向下:{:.2f}".format(up,down))

Q2(0.005,365)
Q2(0.01,365)
'''
Q3: 一年365天,一周五个工作日,休息两天,百分之一
'''
dayfactor = 0.01
dayup = 1.0
for i in range(365):
    if i%7 in [0,6]:
        dayup = dayup*(1-dayfactor)
    else:
        dayup = dayup*(1+dayfactor)
print("工作日的力量:{:.2f}".format(dayup))
'''
Q4: 工作日模式要努力到什么水平,才能与每天努力1%一样
A :每天进步1%,永不停歇
B : 一周工作5天,休息2天,休息日下降1%,要多努力呢?
'''
def dayUp(df):
    dayup = 1
    for i in range(365):
        if i%7 in [0,6]:
            dayup = dayup*(1-0.01)
        else:
            dayup = dayup*(1+df)
    return  dayup
dayfactor = 0.01
while dayUp(dayfactor)<37.78:
    dayfactor += 0.0001
print("工作日的努力参数是:{:.4f}".format(dayfactor))

GRIT : perseverance and passion for a long-term goals

四、天天向上的力量‘举一反三’

'''
三天打鱼两天晒网呢?
'''
def dayRaise(r):#raise是保留字
    factor = 1
    for i in range(365):
        if i%5 in [0,4]:
            factor = factor*(1-r)
        else :
            factor = factor*(1+2*r)
    return factor
print("三天打鱼两天晒网,但努力时双份的结果是:{:.4f}".format(dayRaise(0.01)))

'''
每周学习6天 知识加1%,休息一天 能力减3%
'''
def th(r):
    fact = 1
    for i in range(365):
        if i%7 in [6]:
            fact = fact*(1-3*r)
        else :
            fact = fact*(1+r)
    return fact
print("休息时大脑不工作,能力值为:{:.4f}".format(th(0.01)))

向上:1.44,向下:0.69
向上:6.17,向下:0.16
向上:37.78,向下:0.03
工作日的力量:4.63
工作日的努力参数是:0.0182
三天打鱼两天晒网,但努力时双份的结果是:17.6269
休息时大脑不工作,能力值为:4.6208