python中不同进制的整数之间可以直接运算_Python基础之类型与运算

2ff34e647e2e3cdfd8dca593e17d9b0a.png

Python的类型与运算-数字

数字类型

整数

在Python 2.x版本中整数分为一般整数和长整数。>>> 2**63

9223372036854775808L

>>> 2**62-1+2**62

9223372036854775807L

这个是在Python 2.7.15版本的结果。每个版本会有一些不同。

在这个版本中一般整数是64bit的(符号位占1bit)。

当超过64bit,会在后面加L

之前的一些版本 有可能是32bit,这个看具体的版本。

但是在Python 3.x就没有这种区分,整数只有一个类型。

整数-二进制、八进制、十六进制

在Python里整数可以输入或输出成二进制,八进制或者十六进制数。二进制数表示方式为0b或者0B开头。例如:0b10110010,0B11001001

八进制数表述方式为0o或者0O开头。例如:0o632765,0O223174 十六进制数表述方式为0x或者0X开头。例如:0xff,0X3A,0xAC,0Xb7

需要把整数输出成非十进制数的时候,需要使用一下函数:bin(i), oct(i), hex(i) 在这里i是十进制数字,输出的是文本形式。

我们需要把一个非十进制数的文本转化为整数:int(str,base) 在这里,str是文本形式的数字,base为2,8,16 数字。各自代表 二进制,八进制,十六进制。

注:Python提供从2进制到36进制数的输入。

浮点数

在Python里浮点数是用64bit来存储的。精度大约能达到17位。

Python 2.7>>> print(1.0/6.0)

0.166666666667

>>> 1.0/6.0

0.16666666666666666

>>> repr(1.0/6.0)

'0.16666666666666666'

repr模式就是交互模式时的显示模式

复数

在Python里复数的现实方式跟现实稍微有点区别:

现实:3+5i - 在这里3是实数部分,5i为虚数部分

Python:3+5j - 现实里的i换成“j”或者“J”来表示。

在Python里还有一种表示方式是函数格式:complex(3,5)>>> a = 3+5j

>>> b = 3+5J

>>> c = complex(3,5)

>>> a==b

True

>>> c==b

True

>>> c==a

True

其他

在一些特殊场景,我们会需要特殊的数字类型:

分数

在Python里使用Fraction函数来表示分数:>>> from fractions import *

>>> print(Fraction(4,5))

4/5

无穷大,无穷小

float(‘inf’)是无穷大

float(‘-inf’)是无穷小>>> 1/float('inf')

0.0

>>> 1/float('-inf')

-0.0

各类运算符

各类运算符算数运算符:+,-,*,/,%,//,**

比较运算符:==,!=,>,=,<=

赋值运算符:=,+=,-=,*=,/=,%=,//=,**=

位运算符:&,|,^,~,<>

逻辑运算符:and,or,not

成员运算符:in, not in

身份运算符:is, is not

运算符优先级:• **

• ~,+,- #这里的加和减是一元运算符

• *,/,%,//

• +,-

• <>

• &

• ^,|

• <=,>=,

• ==,!=

• =,+=,-=,*=,/=,%=,//=,**=

-----------------------------------------

• is, is not

• in, not in

• and, or, not

运算符应用

类型升级>>> a = 10

>>> b = 3.14

>>> c = 1+2j

>>> d = Fraction(3,4)

>>> a+b

13.14

>>> a+c

(11+2j)

>>> a+d

Fraction(43, 4)

>>> b+c

(4.140000000000001+2j)

>>> b+d

3.89

>>> c+d

(1.75+2j)

>>>

基本数学函数

基本数学函数pow:幂函数

abs:绝对值

fabs:绝对值(与abs稍微有区别)(math) round:四舍五入(2.x和3.x结果略不同)

ceil,floor:取整(math)

int,bin,oct,hex,float等:格式转换

random:随机函数(random)

cmp:比较函数(*2.x)

log:算出自然对数(math)

log10:算出底数为10的对数(math)

max,min:选出最大,最小值

modf:对浮点数分成小数部分和整数部分(math)

sqrt:算出平方根

数学函数的应用

int,bin,oct,hex,float:

从10进制转化为其他进制:

bin,oct,hex 这些函数是需要转换进制的时候使用>>> bin(10) //二进制

'0b1010'

>>> oct(10) //八进制

'012'

>>> hex(10) //十六进制

'0xa'

把整数转化为浮点数 float>>> float(1)

1.0

int 非十进制的文本转化为Python里的十进制数值时使用:>>> int('0b10000000',2)

128

>>> int('0o777',8)

511

>>> int('0xffff',16)

65535

也支持浮点数转化为整数,是把小数部分去掉

>>> int(2.8)

2

>>> int(-2.2)

-2

pow,sqrt,max,min,abs,fabs

pow:幂函数,功能与运算符**一样>>> pow(2,10)

1024

sqrt:区当前数的平方根>>> math.sqrt(16)

4.0

max:最大值与min:最小值>>> max(5,33,52,75,22)

75

>>> min(2,3,66,44,1,88,65)

1

abs与fabs:取绝对值>>> abs(-1)

1

>>> math.fabs(-1)

1.0

同样是取绝对值,但是fabs函数取出来的 是浮点数,abs可以保持原有的数字类型

ound,ceil,floor

round:四舍五入?

这个函数在2.x和3.x版本有区别Python2.x上的结果:

>>> round(2.5)

3

Python 3.x上的结果

>>> round(2.5)

2

在3.x里这个函数有变化,当要舍弃的数值正好为5(中间)时,会取接近的偶数 值。但你要是取小数点以下几位时可能结果并不是你想象的。后面解释。

ceil:取最小的大于该值的最大整数(向上取整)>>> math.ceil(3.7)

4.0

floor() 向下取整>>> math.floor(3.7)

3.0

注意:floor()是不能直接访问的,需要导入 math 模块,通过静态对象调用该方法。

cmp:

在Python 2.x里提供了很好的比较函数:cmp(),当前面的数值小,结果是-1;一样的时 候结果为0,前面的数值大的时候结果为1。但是Python 3.x里很可惜舍弃了这个函数>>> cmp(1,2)

-1

>>> cmp(2,2)

0

>>> cmp(3,2)

1

random:

在Python 里提供了很好的随机函数使用的模块:random。其使用方法如下:

1、取0-1之间的随机小数:>>> random.random()

0.6138605923784588

2、取自定义数里的随机数(多个元素):>>> random.choice((1,2,3,4,5))

4

>>> random.choice((1,2,3,4,5))

5

>>> random.sample((1,2,3,4,5),2)

[5, 4]

3、随机打乱顺序>>> a = [1,2,3,4,5]

>>> random.shuffle(a)

>>> a

[4, 3, 2, 1, 5]

4、获取N位随机数(二进制):random.getrandbits(5)

31L

modf:

此函数是把浮点数的整数位和小数位

单独取出来:>>> math.modf(2.5)

(0.5, 2.0)

在这里会发现整数部分也是浮点数,而不是整数

log:

此函数为指数函数。

默认e为底数, 结果为浮点数。

log10以10为底数。可 以自定义底数。>>> math.log(2)

0.6931471805599453

>>> math.log(4,2)

2.0

>>> math.log10(100)

2.0

round与格式化输出: 当输出以一定的格式来输出的时候,比如:a的值是2.5和2.335,2.345的时候,我们 只需要小数点之后两位,这个时候不会使用round函数来进行所谓的“四舍五入”, 两者也会有点区别。Python 2.x:

>>> round(2.5)

3.0

>>> format(2.5,'0.0f')

'2'

>>> round(2.335,2)

2.33

>>> format(2.335,'0.2f')

'2.33'

>>> round(2.345,2)

2.35

>>> format(2.345,'0.2f')

'2.35'

Python 3.x:

>>> round(2.5)

2.0

>>> format(2.5,'0.0f')

'2'

>>> round(2.335,2)

2.33

>>> format(2.335,'0.2f')

'2.33'

>>> round(2.345,2)

2.35

>>> format(2.345,'0.2f')

'2.35'

Decimal模块:

在使用浮点数的时候,因为计算机里是使用二进制来表示,所以会出现精度问题, 当金融行业等不许出现一丝问题的时候,我们会使用Decimal模块来解决精度问题。>>> a=2.1

>>> b=4.2

>>> a+b

6.300000000000001

>>> a=Decimal('2.1')

>>> b=Decimal('4.2')

>>> a+b

Decimal('6.3')

格式化输出-format:

使用bin(),oct(),hex()的时候会发现前面会加0b,0o,0x。

我们不想要前缀的时候可以 使用format函数来解决:>>> a=13

>>> bin(a)

'0b1101'

>>> oct(a)

'0o15'

>>> hex(a)

'0xd'

>>> format(a,'b')

'1101'

>>> format(a,'o')

'15'

>>> format(a,'x')

'd'

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值