1、数据类型
python支持丰富的数据类型,且基本数据类型可以分为两类:数字和组合数据类型。
2、数字类型
2.1 整型
又称为整数
- 包括正整数、负整数、零
- Python 3.x中不限制整数的大小
- 整数可以是二进制、八进制、十进制和十六进制整数
- 十进制整数:0~9共10个数字表示,如 3,-4,0等
- 二进制整数:用两个数字 0 和 1 表示,以 0B 或 0b开头,如 0B1011(相当于十进制 11),-0b101(相当于十进制数 -5)
- 八进制整数:用8个数字 0~7 表示,以0o 或 0O开头,如 0o56(相当于十进制 46)、-0O145(相当于十进制数 -101)
- 十六进制整数:用16个数字(0~9、 A~F)表示,以0x 或 0X开头,如 0xAF(表示十进制 175)。
不同进制的数可以通过 python 内置函数相互转化:
bin() : 将其他进制的数转换为二进制数
int () : 将其他进制的数转换成十进制数
oct() : 将其他进制的数转换成八进制数
hex() : 将其他进制的数转换成十六进制数
'''
具体使用方式实例如下:
结果可以自己复制体验:
'''
print("十进制——>二进制:", bin(34))
print("十进制——>八进制:", oct(-12))
print("十进制——>十六进制:", hex(56))
print("十六进制——>十进制:", int(0x34))
# python 3.6X以上版本支持数字中间位置使用单个下划线作为分隔以提高数字的可读性
2.2 浮点类型
- 浮点(Float)类型的数包括整数部分和小数部分,可以写成普通的十进制形式,如 0.64、 0.0等;也可以用科学计数法表示(带有指数的浮点数),如 32.6e18(相当于 3.26* 10^19)
- python 中提供大约 17 位的精度和范围从 -308 到 308 的指数,不支持 32 位的单精度浮点数。因此, Python 中只有 Float 类型,没有 其他编程语言中的 Double 类型。
f = 32.5e16
print("f = ", f)
print("f = %e" % f)
print("f = %f" % f)
'''
结果为:
f = 3.25e+17
f = 3.250000e+17
f = 325000000000000000.000000
'''
由于精度和数制转换之间的问题,浮点数运算结果有时和预期结果存在差异
a = 0.1
b = 0.2
print('a + b = ', a + b)
if ((a + b) == 0.3):
print("(a + b) == 0.3")
else:
print("(a + b) != 0.3")
'''
结果为:
a + b = 0.30000000000000004
(a + b) != 0.3
'''
在上例中,我们本以为其结果是 0.3,但确是错误的。出现该情况的原因有:
- 浮点数在计算机中存储和表示时,有效位数是有限的,对尾数进行了一些处理;
- 计算机在进行运算时,会将十进制数转换为二进制数后再进行运算,这可能导致十进制数置换为二进制数后成为了循环小数。
该情况的处理方法有:
- 以二者之差的绝对值是否足够小来作为两个实数是否相等的依据
- 使用 round(f, n) 函数限定小数位数为 n 位
num = 3.210000004
rnum = round(num, 2)
print(str(num) + " 限定两位小数是: " + str(rnum))
# 结果为:3.210000004 限定两位小数是: 3.21
2.3 复数类型
复数(Complex)由实数部分和虚数部分构成,可以用 a + bj 或 a + bJ 或 complex(a, b) 表示,如:12.6 + 5j。使用 z.real 获得实部,用 z.imag 来获得虚部
z = complex(-2, 7)
print(z) # (-2+7j)
print(z.real, z.imag) # -2.0 7.0
# 复数加法
z1 = 12 - 4j
z2 = -3.2 + 22.1j
print("z1 + z2 : ", z1 + z2) # z1 + z2 : (8.8+18.1j)
2.4 布尔类型
布尔类型(Bool)的常量包括 True 和 False,分别表示真和假。
- 在 python 中,非 0 数字、非空字符串、非空列表、非空元组、非空字典、非空集合等在进行条件判断时均视为真 (True)
- 数字 0 或 0.0、空字符串、空列表、空元组、空字典、空集合等在进行条件判断时均视为假(False)
- 布尔类型的常量(True 和 False)如果出现在算术运算中,True 被当作 1,False 被当作 0
# 判断列表和元组是否为空
兴趣 = ['武术', '艺术', '音乐', '体育']
if 兴趣:
print("列表'兴趣'不为空!") # 列表'兴趣'不为空!
else:
print("列表'兴趣'为空!")
# 布尔类型常量参与数值运算
print(True + 2) # 3
print(False + 2) # 2
2.5 数字类型转换
Python 中的数字类型可以通过几个相应的内置函数进行转换。
# int(x):将 x 转换成一个整数
>>> a = 2.0
>>> b = int(a)
>>> print(b)
2
# float(x): 将 x 转换为一个浮点数
>>> print("int(-2.56)——>", int(2.56))
int(-2.56)——> 2
# complex(x) 或 complex(x, y): 前者将 x 转换为一个复数,实部为 x,虚部为 0;后者同样功能但虚部为 y
>>> print("complex(3)——>", complex(3))
complex(3)——> (3+0j)
>>> print("complex(3, -1.5)——>", complex(3, -1.5))
complex(3, -1.5)——> (3-1.5j)
# bool(x): 将非布尔类型数值转换为一个布尔类型常量
>>> print("bool(11):", bool(11))
bool(11): True
2.6 分数和高精度实数
python 标准库模块 fractions 中的 Fraction 对象和 Decimal 对象分别支持分数运算和高精度运算。
# 分数运算及高精度实数
from fractions import Fraction
a = Fraction(2, 5) # 创建分数对象
b = Fraction(1, 5) # 创建分数对象
c = a.denominator # 查看分母: 5
d = a.numerator # 查看分子: 2
sum = a + b # 分数之间的算术运算: Fraction(3, 5)
from fractions import Decimal
a = 1 / 3 # 一半精度 # 0.3333333333333333
b = Decimal(1 / 3) # 高精度实数 # Decimal('0.333333333333333314829616256247390992939472198486328125')
2.7 常用数学函数
python 中的数学函数有两种:内置函数(数量不多,可以直接在程序中使用)和 Math 库中的函数(提供了对底层 C 函数库的访问,函数种类多,功能齐全,需要导入 Math 库 才可以调用相关函数)
- 常用内置数学函数
函数名 | 功能说明 | 举例 | 结果 |
---|---|---|---|
abs(x) | 返回数字的绝对值 | abs(-10) | 10 |
pow(x,y) | 返回x**y运算后的结果 | pow(2,3) | 8 |
round(x[,n]) | 返回浮点数x的四舍五入值 | round(1.23456, 2) | 1.23 |
max(x1, x2,…) | 返回给定参数的最大值 | max(1, 2, 3) | 3 |
min(x1, x2,…) | 返回给定参数的最小值 | min(1, 2, 3) | 1 |
- Math 中的常用数学函数
函数名 | 功能说明 | 举例 | 结果 |
---|---|---|---|
math.pow(x, y) | 返回x**y后的结果 | math.pow(2, 4) | 16.0 |
math.ceil(x) | 返回数字的上入整数(向上取整) | math.ceil(2.2) | 3 |
math.exp(x) | 返回e的x次幂 | math.exp(2) | 7.389… |
math.fabs(x) | 返回数字的绝对值 | math.fabs(-8.0) | 8.0 |
math.floor(x) | 返回数字的向下取整值 | math.floor(2.4) | 2 |
math. log(y, x) | 返回以x为基数的 y 的对数 | math.log(8, 2) | 3.0 |
math.log10(y) | 返回以 10 为基数的 y 的对数 | math.log10(100) | 2.0 |
math.modf(x) | 返回x 的整数部分与小数部分 | math.modf(3.6) | (0.6000…01, 3.0) |
math.sqrt(x) | 返回数字x 的平方根 | math.sqrt(9.0) | 3.0 |
math.sin(x) | 求x(x为弧度)的正弦值 | math.sin(1.57) | 0.99999968… |
math.cos(x) | 求x(x为弧度)的余弦值 | math.cos(1.04) | 0.50622025… |
math.tan(x) | 求x(x为弧度)的正切值 | math.tan(0.785) | 0.999203… |
- Math 库中还有可以使用的常量,如e(自然对数的底),pi(圆周率的值等)。
写在最后:
首先,如果本篇文章有任何错误,烦请读者告知!不胜感激!
其次,本篇文章仅用于日常学习以及学业复习,如需转载等操作请告知作者(我)一声!
最后,本文会持续修改和更新,如果对本分栏的其他知识也感兴趣,可以移步目录导航专栏,查看本分栏的目录结构,也更方便对于知识的系统总结!
感谢!笔芯!