数字类型及操作
整数类型
- 可正可负,没有取值范围限制
- 例如常用函数pow(x,y),计算x的y次方
pow(2,3)
8 - 四种进制表示形式
十进制:1010,99,-217
二进制,以0B或0b开头:0b010,-0B010
八进制,以0o或0O开头:0o123,-0O456
十六进制,以0X或0x开头:0x9a,-0X89
浮点数类型
- 带有小数点及小数的数字
- 浮点数取值范围和进度都有限制,通常可忽略
- 浮点数存在不确定尾数
python中用53位二进制表示小数部分,且二进制与十进制没有严格的对应关系,所以用十进制表示小数只是截取了小数的一部分。
>>> 0.2 + 0.1 == 0.3
False
round(x,d):对x四舍五入,取d位小数
>>> round(0.2 + 0.1 ,1) ==0.3
True
复数类型
与数学中复数类型一致
例:
z = 1 + 2j
z.real
1.0
z.imag
2.0
数值运算操作符
操作符及使用 | 描述 |
---|---|
x + y | 加,x与y之和 |
x - y | 减,x与y之差 |
x * y | 乘,x与y之积 |
x / y | 除,x与y之商 |
x // y | 整数除,返回x除以y的整数部分 |
+ x | x本身 |
- x | x的负值 |
x % y | 模运算,x对y取余 |
x ** y | 幂运算,x的y次方,例如函数pow(2,3), 输出结果为8 |
x += y | 二元操作符,等价于x = x + y(其他运算类似) |
数字类型的关系
类型之间可以混合运算,生成‘最宽’的结果
- 三种类型间逐渐变宽:
整数->浮点数->复数
例如:>>> 1+2.3
3.3
数值运算函数
函数及使用 | 描述 |
---|---|
abs(x) | 绝对值,x的绝对值,abs(-1.0)输出结果为1.0 |
divmod(x,y) | 商余,同时返回(x//y)与(x%y)的结果,divmod(10,3)结果为(3,1) |
pow(x,y[,z]) | 幂运算,[..]表示可省略,表示x的y次方,[,z]表示对x的y次方结果对z做模运算,例如pow(2,3,3)结果为2 |
round(x[,d]) | 四舍五入,d是小数位,默认值为0,例round(1.23,1)输出结果为1.2 |
max(x1,x2,x3..,xn) | 判断最大值,例max(1,3,5,7,9)结果为9 |
min(x1,x2,x3,..,xn) | 判断最小值,例min(1,3,5,7,9)结果为1 |
int(x) | 将数据类型转换为整数类型,例int(1.23)结果为1,int('2.34')结果为2 |
float(x) | 将数据类型转换为浮点型,例float(1)结果为1.0,float('2')结果为2.0 |
实例练习:天天向上的力量
-
一年365天,每天进步1%,累计进步多少?
#DayDayUP_1.py
dayup = 1.0
dayfactor = 0.01
for i in range(365):
dayup = dayup * (1 +dayfactor)
print('{:.2f}'.format(dayup))
运行结果:
37.78 -
一年365天,每天退步1%,累计退步多少?
#daydayUp_2.py
dayup = 1.0
dayfactor = 0.01
for i in range(365):
dayup = dayup * (1 - dayfactor)
print('{:.2f}'.format(dayup))
运行结果:
0.03 -
一年365天,一周5个工作日,每天进步1%;一周2个休息日,每天退步1%,这种工作日的力量如何?
#daydayUp_03.py
dayup = 1.0
dayfactor = 0.01
for i in range(365):
if i % 7 in [0,6]:
dayup = dayup * ( 1 - dayfactor)
else:
dayup =dayup * (1 + dayfactor)
print('{:.2f}'.format(dayup))
运行结果:
4.63
- 工作日模式要努力到什么水平才能与每天努力1%一样?
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))
运行结果:
工作日需要努力的水平为:0.019
网友评论