Python数据结构之number

概述 

python中就数字类型而言,支持三种,分别是int,float,complex.

鉴于complex复数在日常的使用实在太少,本次就忽略掉,不进行介绍.

重点介绍int和float两个类型.

首先,int和float作为python中的两个类,将简单的介绍各自的属性和方法.

其次再综合性介绍算术运算、比较运算、进制转换等.

整数形int 

原生的python为整形int类提供了四个方法和四个属性,虽然不常用,但简单的介绍下.

方法说明
bit_length返回整数转换成二进制后的bit位数
conjugate返回整数的共轭复数
from_bytes返回由给定字节数组表示的整数
to_bytes返回表示整数的字节数组,from_bytes的逆序运算
属性说明
imag返回复数的虚数部分
real返回复数的实数部分
numerator有理数最小项的分子
denominator有理数最小项的分母

需要注意的时,不能直接用数字来调用方法或数字,而要使用(数字).方法的形式,例如:

print((10).bit_length())#输出: 4

浮点数float 

原生的python为浮点float类提供了五个方法和两个个属性,虽然不常用,但简单的介绍下.

方法说明
as_integer_ratio 在分母为正的前提下,返回一对比值刚好为该浮点数的整数
conjugate返回该浮点是的共轭复数
hex返回浮点数的十六进制表示形式
fromhex将十六进制表示形式转换为浮点数,hex的逆运算
isteger判断给定的浮点是是否为整数(如3.0是整数,而3.1则不是)
属性说明
imag返回复数的虚数部分
real返回复数的实数部分

对于浮点数同样要使用(数字).方法的形式,例如:

print((3.0).is_integer())#输出:True
print((4.5).as_integer_ratio())#输出:(9, 2)

运算

  • 算术运算

符号作用
+加法
-减法
*乘法
/浮点除(计算结果为浮点数)
%取余数
**幂运算
//整除(计算结果为整数)

除了浮点除和整除外,其他算术运算对于int整型还是float浮点型并没有什么区别.

原则是int整型计算的结果依然是整型,float浮点型计算的结果依然是浮点型.

print(4+2,'|',2.5+3.1)
print(4*2,'|',2.5*3.1)
print(4**2,'|',2.5**3.1)
print(4-2,'|',2.5-3.1)
print(4%2,'|',2.5%3.1)

# 输出:
6 | 5.6
8 | 7.75
16 | 17.12434728726902
2 | -0.6000000000000001
0 | 2.5

现在来说说浮点除和整除.

正如其名,浮点除计算结果永远是浮点数,整除的结果永远是整数(丢弃余数,若无法整除)

先来看看int整型:

print(2/1)#输出:2.0
print(10//3)#输出:3

再来说float浮点型:

print(2.0/1.0)#输出:2.0
print(10.0//3.0)#输出:3

 看似10.0//3.0返回的是浮点数,并不是整数,但别忘了float类有一个自己判断是否为整数的方法istrger:

print((10.0//3.0).is_integer())#输出:True

可见,使用//整除,又叫地板除,在无法整除时,是丢弃了余数的,而%运算可以只取余数.

而python有一个divmod的内置函数,用元组的形式同时返回商和余数:

print(divmod(10.0,3.0))
print(divmod(20,3))
print(divmod(30,3.0))

#输出:
(3.0, 1.0)
(6, 2)
(10.0, 0.0)

前面我们提到,除了地板除,int整型计算的结果依然是整型,float浮点型计算的结果依然是浮点型,现在从刚刚的例子可以看到

浮点数与整数的运算返回的结果也是浮点数.

  • 比较运算 

比较运算不区分整型、浮点型,可以直接比较,返回的True或者False.

符号含义
>大于
<小于
==等于
!=不等于
>=大于等于
<=小于等于
print(5>2.5)#输出:True
print(10==10.0)#输出:True
  • 进制运算

一般情况下,存在四种进制:二进制、八进制、十进制、十六进制.

进制二进制八进制十进制十六进制
函数binoctinthex
表示方式(第一位是数字0,第二位是字母)0b0o正常数字0x

四种进制之间,使用相应的函数,可以进制进制转换.

例如,用各种进制来表示十进制的10:

print(bin(0o12),'|',bin(10),'|',bin(0xa))
print(oct(0b1010),'|',oct(10),'|',oct(0xa))
print(hex(0b1010),'|',hex(0o12),'|',hex(10))
print(int(0b1010),'|',int(0o12),'|',int(0xa))

#输出:
0b1010 | 0b1010 | 0b1010
0o12 | 0o12 | 0o12
0xa | 0xa | 0xa
10 | 10 | 10

另外有一种特殊情况,需要将字符格式表示数字转换为十进制,且字符没有按照标准的格式来表示.

那么就需要手工指定base(默认值是10),例如:

print(int('1af',base=16))#输出:431

#将八进行的77转换为十进制
print(int('77',base=8))#输出:63

#将二进制的101转换为十进制
print(int('100',base=2))#输出:4

#base参数默认是10
print(int('20'))#输出:20

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值