[Python教程] 04-1Python标准数据类型-数字类型和布尔类型

Python标准数据类型

  • Numbers(数字) √
  • Boolean(布尔) √
  • String(字符串)
  • List(列表)
  • Tuple(元组)
  • Dictionary(字典)

 

Python 数字类型

数字数据类型用于存储数值。

他们是不可改变的数据类型,这意味着改变数字数据类型会分配一个新的对象。

当你指定一个值时,Number 对象就会被创建:

var1 = 1
var2 = 10

您也可以使用del语句删除一些对象的引用。

del语句的语法是:

del var1[,var2[,var3[....,varN]]]

您可以通过使用del语句删除单个或多个对象的引用。例如:

del var
del var_a, var_b

 

Python支持的数字类型

  • int(有符号整型)
  • float(浮点型)
  • complex(复数) 
数字类型示例

占用内存空间大小

范围
int1, -3, -2945, 123, 0x69, 107374182328-2**30+1~2**30-1 (0为24)
float3.14, -0.23, 2e10, -70.2E-12

24

所有
complex3.14j, -.6545+0J, 3e+26J32所有

查看对象的类型和占用内存空间的方法

import sys

print(type(12))  # <class 'int'>
print(type(3.14))  # <class 'float'>
print(type(1+2j))  # <class 'complex'>

print(sys.getsizeof(0))  # 24
print(sys.getsizeof(24))  # 28
print(sys.getsizeof(3.14)  # 24
print(sys.getsizeof(3+4j))  # 32

 

int类型

# float转int
# 1.向下取整
int(3.14)  # 3
int(9.99)  # 9

# 2.四舍五入
round(3.14)  # 3
round(9.99)  # 10

# 3.向上取整
import math
math.ceil(3.14)  # 4
math.ceil(9.99)  # 10


# 二进制、八进制、十进制、十六进制转换
# 1.十进制转二进制
bin(12)  # '0b1100', '0b'开头

# 2.十进制转八进制
oct(8)  # '0o10', '0o'开头

# 3.十进制转十六进制
hex(16)  # '0x10', '0x'开头

# 4.其他进制转十进制
int('0b101', 2)  # 5, 二进制
int('0o7654321', 8)  # 2054353, 八进制
int('0x2521', 16)  # 9505, 十六进制

# 5.其他进制互转: 先转成十进制,再转成对应进制
bin(int('0x252a4', 16))  # '0b100101001010100100', 十六->十->二
oct(int('0b10001110111', 2))  # '0o2167', 二->十->八


# python固定在内存的int数据
x = 0
for y in range(10000):
    x = int(str(y))
    if id(x) != id(y):
        break
print(x)  # 257, 也就是说0~256这些int数据是固定在内存的,当变量解绑后,也不会从内存空间释放

 

float类型

# int转float
float(3)  # 3.0


# 小数位设置
round(3.1415926, 1)  # 3.1, 四舍五入保留1位小数
round(3.1415926, 3)  # 3.142, 四舍五入保留3位小数


# 浮点数损失精度问题
0.1 + 0.2  # 按理结果应该是0.3,但实际返回0.30000000000000004

"""
为什么有极小的误差?
因为 Python 中使用双精度浮点数来存储小数。
在 Python 使用的 IEEE 754 标准(52M/11E/1S)中,8字节64位存储空间分配了52位来存储浮点数的有效数字,11位存储指数,1位存储正负号,即这是一种二进制版的科学计数法格式。
虽然52位有效数字看起来很多,但麻烦之处在于,二进制小数在表示有理数时极易遇到无限循环的问题。
其中很多在十进制小数中是有限的,比如十进制的 1/10,在十进制中可以简单写为 0.1 ,但在二进制中,他得写成:0.0001100110011001100110011001100110011001100110011001…..(后面全是 1001 循环)。
因为浮点数只有52位有效数字,从第53位开始,就舍入了。这样就造成了标题里提到的”浮点数精度损失“问题。 
舍入(round)的规则为“0 舍 1 入”,所以有时候会稍大一点有时候会稍小一点。
"""

# 为了解决这个位,Python提供了另一种数字类型——Decimal
from decimal import Decimal
Decimal("0.1") + Decimal("0.2")  # Decimal('0.3')

# 注意Decimal内传字符串,如果传float仍会有这个问题
Decimal(0.1) + Decimal(0.3)  # Decimal('0.3999999999999999944488848769')

 

complex类型

# 获取实部虚部
x = 2.5+3.6j
x.real  # 2.5, 实部
x.imag  # 3.6, 虚部


# 共轭复数
x.conjugate()  # (2.5-3.6j)

 

Python布尔类型

布尔型代表真假值,通常用在条件判断和循环语句中。

Python 定义了 bool 类型以及两个常量 True 和 Flase 代表真假。

# int转bool, 除了0为False,其余都是True
bool(0)  # Flase
bool(12)  # True
bool(-345)  # True


# float转bool, 同理
bool(0.0)  # Flase
bool(3.14)  # True
bool(-23.455)  # True


# complex转bool, 同理
bool(0.0+0j)  # Flase
bool(3.14+1.2j)  # True
bool(-23.455-2j)  # True


# 所有对象都能转bool,包括bool类型
bool(True)  # True
bool(Flase)  # False


# 从上面可以看出,表示0的其布尔值基本都是False
# 表示假(错)的其布尔值基本都是False
# 表示空(None,空字符串,空列表,空元组,空字典)的其布尔值基本都是False

 

https://www.runoob.com/python/python-variable-types.html

https://www.cnblogs.com/hdk1993/p/8893954.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值