数字类型及操作
整数类型
与数学中整数的概念一致
可正可负,没有取值范围限制
pow(x,y)函数:计算xy,想算多大算多大
>>> pow(2,100)
1267650600228229401496703205376
>>> pow(2,pow(2,15))
141 546103104495478900155.....
4种进制表示形式
十进制: 1010, 99, -217
二进制,以0b或0B开头: 0b010, -0B101
八进制,以0o或0O开头: 0o123, -0O456
十六进制,以0x或0X开头: 0x9a, -0X89
浮点数类型
与数学中实数的概念一致
带有小数点及小数的数字
浮点数取值范围和小数精度都存在限制,但常规计算可忽略
取值范围数量级约-10308至10308,精度数量级10-16
浮点数间运算存在不确定尾数,不是bug
>>> 0.1 + 0.3
0.4
>>> 0.1 + 0.2
0.30000000000000004
0.1 53位二进制表示小数部分,约10-16
0.00011001100110011001100110011001100110011001100110011010 ( 二进制表示)
0.00000000000000055511151231257827021181583404541015625 ( 十进制表示)
二进制表示小数,可以无限接近,但不完全相同
0.1+0.2
结果无限接近0.3,但可能存在尾数
>>>0.1+0.2==0.3
False
>>> round(0.1+0.2, 1) == 0.3
True
round(x, d):对x四舍五入,d是小数截取位数
浮点数间运算及比较用round()函数辅助
浮点数可以采用科学计数法表示
使用字母e或E作为幂的符号,以10为基数,格式如下:
e 表示 a*10b
例如: 4.3e-3 值为0.0043 9.6E5值为960000.0
复数类型
与数学中复数的概念-致
如果x2= -1 ,那么x的值是什么?
定义j=√ (-1) , 以此为基础,构建数学体系
a+bj被称为复数,其中, a是实部,b是虚部
z = 1.23e-4+5.6e+89j
实部是什么? z.real获得实部
虚部是什么? z.imag获得虚部
数值运算操作符
数字类型的关系
类型间可进行混合运算,生成结果为"最宽"类型
三种类型存在一种逐渐"扩 展"或"变宽"的关系:
整数->浮点数->复数
例如: 123 + 4.0= 127.0 (整数+浮点数= 浮点数)
数值运算函数
实例:天天向上的力量
基本问题:持续的价值
一年365天,每天进步1%,累计进步多少呢?
一年365天 ,每天退步1%,累计剩下多少呢?
数学公式可以求解,似乎没必要用程序
如果是"三天打鱼两天晒网”呢?
如果是"双休日又不退步"呢?
问题1:1‰的力量
一年365天,每天进步1‰ ,累计进步多少呢?
1.001365
一年365天,每天退步1‰ ,累计剩下多少呢?
0.999365
#DayDayUpQ1.py
dayup =pow(1.001,365)
daydown =pow(0.999,365)
print("向上: {:.2f}, 向下: {:.2f}" .format(dayup, daydown))
问题2:5%和1%的力量
一年365天,每天进步5%或1 %,累计进步多少呢?
1.005365 1.01365
一年365天,每天退步5%或1 %,累计剩下多少呢?
0.995365 0.99365
#DayDayUpQ2. py
dayfactor = 0.005
dayup = pow(1+dayfactor, 365 )
daydown = pow(1-dayfactor, 365)
print("向上: {:.2f}, 向下: {:.2f}" . format (dayup, daydown))
使用变量的好处:一处修改即可
问题3 :工作日的力量
一年365天, 一周5个工作日,每天进步1%
一年365天, 一周2个休息日,每天退步1%
这种工作日的力量,如何呢?
#DayDayUpQ3. py
dayup = 1.0
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))
问题4 :工作日的努力
工作日模式要努力到什么水平,才能与每天努力1%-样?
A君: 一年365天,每天进步1% ,不停歇
B君: 一年365天,每周工作5天休息2天,休息日下降1%,要多努力呢?
for…in…(计算思维)—> def…while…(“笨办法”试错)
#DayDayUpQ4. 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.001
print("工作日的努力参数是: {:.3f} ".format ( dayfactor))
根据df参数计算工作日力量的函数,参数不同,这段代码可共用
def保留字用于定义函数
while保留字判断条件是否成立,条件成立时循环执行