概述
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
-
进制运算
一般情况下,存在四种进制:二进制、八进制、十进制、十六进制.
进制 | 二进制 | 八进制 | 十进制 | 十六进制 |
函数 | bin | oct | int | hex |
表示方式(第一位是数字0,第二位是字母) | 0b | 0o | 正常数字 | 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