Python --数字

目录

1, 数字类型

2, 数字类型操作

2-1, 创建

2-2, 查询

2-3, 修改

2-4, 删除

3, 整型

3-1, bool型

3-2, 标准整型

3-3, 十进制整型(Decimal)

4, 浮点型

5, 复数

6, 操作符

6-1, 算数运算符

6-2, 比较运算符

6-3, 位操作符(只适用整数)

7, 内建函数

8, 相关模块

8-1, math/cmath模块

8-2, operator模块

8-3, random模块


1, 数字类型

python支持的数字类型有整型,浮点型,bool型,复数型,十进制浮点型(decimal)

2, 数字类型操作

2-1, 创建

直接通过变量赋值方式

In [172]: a = 1

In [173]: a
Out[173]: 1

2-2, 查询

通过输入变量名方式获取

# 获取变量
In [173]: a
Out[173]: 1

2-3, 修改

由于数字是不可变类型,对变量的修改相当于直接创建新的对象

In [172]: a = 1
In [173]: a
Out[173]: 1

# 重新创建了一个对象
In [174]: a = 2
In [175]: a
Out[175]: 2

2-4, 删除

由于数字是不可变类型,不能进行删除,要删除变量使用del obj的方式进行

In [176]: del a

In [177]: a
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-177-3f786850e387> in <module>
----> 1 a

NameError: name 'a' is not defined

3, 整型

3-1, bool型

仅有两个取值,True和False

# bool型整数
In [261]: bool(1)
Out[261]: True

# bool型和整数运算,结果为整型数字
In [262]: 1 + True
Out[262]: 2
In [12]: True + 1.0
Out[12]: 2.0

# %d格式化输出bool型时,结果为数字
In [263]: print('%d' % True)
1

# %s格式化输出bool型时,结果为bool型
In [264]: print('%s' % True)
True

# %f格式化输出bool型时,结果为浮点型
In [265]: print('%f' % True)
1.000000

3-2, 标准整型

二进制(bin),八进制(oct),十进制,十六进制(hex)

# 二进制
In [178]: a = bin(10)

# 八进制
In [179]: b = oct(10)

# 十进制
In [180]: c = 10

# 十六进制
In [181]: d = hex(10)

In [182]: a, b, c, d
Out[182]: ('0b1010', '0o12', 10, '0xa')

3-3, 十进制整型(Decimal)

用于解决浮点型存储不精确的问题

# 十进制整型
In [257]: Decimal(1.1)
Out[257]: Decimal('1.100000000000000088817841970012523233890533447265625')

# 精确存储,需传入字符串形式数字
In [258]: Decimal('1.1')
Out[258]: Decimal('1.1')

In [259]: Decimal('1.1') + Decimal('1.1')
Out[259]: Decimal('2.2')

4, 浮点型

python中的浮点型是双精度浮点型

5, 复数

由实部和虚部两部分构成, 虚数不能单独存在(如complex(j)), 虚数部分必须有j或J

# 通过complex(str)方式将str表达式生成复数
# 只有实部情况转换
In [211]: complex('1')
Out[211]: (1+0j)

In [212]: complex('1+2j')
Out[212]: (1+2j)

# 只有虚部情况转换
In [213]: complex('j')
Out[213]: 1j

# 通过complex(实部数字, 虚部数字)生成复数, 实部和虚部不能为字符串
# 不传参数生成的复数为0j
In [220]: complex()
Out[220]: 0j

# 只传实部生成复数
In [221]: complex(1)
Out[221]: (1+0j)

# 不能只传"j", 这样会报错
In [222]: complex(j)
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-222-7e5e4f6ab17e> in <module>
----> 1 complex(j)

NameError: name 'j' is not defined

# 只传虚部生成复数
In [226]: complex(1j)
Out[226]: 1j

# 传入实部和虚部
In [227]: complex(1, 2)
Out[228]: (1+2j)

6, 操作符

6-1, 算数运算符

算数运算符有+、 -、 *、 /、 %、 ** , 用于计算结果

6-2, 比较运算符

比较运算符有>, >=, <, <=, ==, !=, 用于比较大小

6-3, 位操作符(只适用整数)

位操作符有>>、 <<、 &、 |、 ^、 ~

# 操作数间按位与运算
In [194]: 30 & 45
Out[194]: 12

# 操作数间按位或运算
In [195]: 30 | 45
Out[195]: 63

# 操作数按位取反
In [196]: ~30
Out[196]: -31

# 操作数左移, 操作数变大
In [197]: 45 << 1
Out[197]: 90

# 操作数右移, 操作数变小
In [198]: 45 >> 1
Out[198]: 22

# 操作数间按位异或
In [199]: 30 ^ 45
Out[199]: 51

7, 内建函数

通过int(obj), 将数字对象obj转换为整型

# 浮点型转换为整型
In [200]: int(1.1)
Out[200]: 1

# 字符串数字类型转换为整型,该数字类型需要是整型才能转换
In [202]: int('10')
Out[202]: 10

# 二进制字符串转换为整型
In [203]: int('1001', base=2)
Out[203]: 9

# 八进制字符串转换为整型
In [204]: int('1001', base=8)
Out[204]: 513

# 十六进制字符串转换为整型
In [205]: int('1001', base=16)
Out[205]: 4097

通过float(obj), 将数字对象转换为浮点型

# 整型数字转换为浮点型
In [207]: float(1)
Out[207]: 1.0

# 字符串数字转换为浮点型
In [208]: float('1.1')
Out[208]: 1.1

通过abs(num), 返回数字的绝对值

In [247]: abs(-1)
Out[247]: 1

通过divmod(num1, num2), 返回num1和num2的商和余数组成的元组

In [248]: divmod(10, 3)
Out[248]: (3, 1)

# 若其中一项为浮点型,结果均为浮点型
In [249]: divmod(10.0, 3)
Out[249]: (3.0, 1.0)

In [250]: divmod(10, 3.0)
Out[250]: (3.0, 1.0)

通过power(x, y, z), 返回(x ** y) % z的结果

In [251]: pow(10, 2, 3)
Out[251]: 1

通过power(x, y), 返回x ** y结果

In [252]: pow(10, 2)
Out[252]: 100

# 若其中一项为浮点型,结果均为浮点型
In [253]: pow(10, 2.0)
Out[253]: 100.0

In [254]: pow(10.0, 2)
Out[254]: 100.0

通过round(num, 小数位), num进行四舍五入,若没有指定小数位,则返回四舍五入后整数;

In [255]: round(3.151)
Out[255]: 3

In [256]: round(3.151, 2)
Out[256]: 3.15

8, 相关模块

8-1, math/cmath模块

数字的数学运算在math模块, 复数的运算在cmath模块, 需要导入后使用

# 以math.cos(10)举例
In [28]: import math
In [27]: math.cos(10)
Out[27]: -0.8390715290764524

8-2, operator模块

运算符的函数实现, 通过dir(operator)查询相关方法

In [30]: import operator
In [31]: operator.add(1, 2)
Out[31]: 3

8-3, random模块

多种伪随机数生成器,通过dir(operator)查询相关方法

# random的常用函数
# 返回0~10之间的随机整数,包含上下限
In [273]: random.randint(0, 10)
Out[273]: 5

# 返回range(0, 1000, 2)的随机数,不包含上限1000, 2是步进
In [274]: random.randrange(0, 1000, 2)
Out[274]: 136

# 返回0~10之间的浮点数,不包括上限
In [275]: random.uniform(0, 10)
Out[275]: 1.718813586833815

# 返回0.0~1.0之间的浮点数
In [276]: random.random()
Out[276]: 0.4017369788758146

# 返回序列中的任意一项
In [277]: random.choice('abcef')
Out[277]: 'e'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值