Python3中的数值类型

1:Python中的数值类型介绍

Python数值类型为不可变类型。
Python中提供了大量的数值类型:它提供了整数(包括正整数,负整数,和零)以及浮点数(带有小数部分的数字)作为其基本类型,我们还可以使用十六进制,八进制,二进制字面量来表示整数;还提供了复数类型;并且允许整数具有无限的精度(只要内存空间足够大);
Python完整的数值类型工具如下:
整数和浮点对象
复数对象
小数:固定精度对象
分数:有理数对象
集合:带有数值计算的集合体
布尔值:真和假
内置函数和模块:round、math、random等
无限制整数精度、表达式、八进制、二进制等
Python中的数值字面量和构造函数:

字面值 说明
345,-100,0,999999999999999 正整数,负整数,和零,整数(无大小限制)
3.14,3.,3.14e-10,3E100,3.0e+100 浮点数
0o1750,0x3e8,0b1111101000 八进制,十六进制,二进制的字面量
5+6j,5.0+6.0j,10j 复数字面量
set('ixusy88'),{1,2,3} 集合
Decimal('3.0'),Fraction(1,3) 小数,分数扩展类型
bool(a),True,False 布尔类型和字面量

2:Python提供的内置数值工具

内置数值工具:

运算符,函数 说明
表达式运算符 +,-,,/,//,>>,*,&等等
内置数学函数 pow,abs,round,int,hex,bin
工具模块 Random,math

2.1: 表达式运算符

a=100
b=3
 
print('a=',a)
print('b=',b)
print('*'*33)
# 算数运算
print('算数运算:')
print('a+b=',a+b)
print('a-b=',a-b)
print('a*b=',a*b)
print('a/b=',a/b)   # 真除法,会保留后面的小数点  100/3 = 33.333333
print('a//b=',a//b)  # 向下取整除法  100//3   = 33   5//-2 = -3
print(r'a%b=',a%b)   # 求余数        100%3  = 1
print('a**b=',a**b)  # 幂运算
 
print('*'*33)
print('位运算:')
print(bin(a),a.bit_length())   # 打印a的二进制数据
print(bin(b),b.bit_length())   # 打印b的二进制数据
'''
a  0b1100100 
b  0b0000011
|  0b1100111   (a|b) 对应位有一个为1,结果就为1,否则为0
^  0b1100111   (a^b) 对应位相同为0,否则为1  (速记:同0)
&  0b0000000   (a&b) 对应位有一个为0,结果就为0,否则为1
b   0b0000011
~b  0b1111100
'''
print('a|b=',a|b)
print('a^b=',a^b)
print('a&b=',a&b)
print('*'*33)

2.2: 内置数学函数

'''
小技巧:
1:如果不知道某个函数怎么使用,那么可以使用help函数打印出函数的详细信息 
如:print(help(pow))
2:查看字符串的所有方法
print([item for item in dir(str) if not item.startswith('__') ])
3:查看所有的内置函数,然后再使用help函数查看。
print([item for item in dir(__builtins__) if not item.startswith('__') and   item[0].islower() ])
 
'''
 
a = 5
b = 3
print('*'*50)
print('pow(5,2)=',pow(5,2),'5**2=',5**2) # pow 幂指数, 2个参数的时候,同**
print('abs(-100)=',abs(-100))
 
#print(help(round))  # 自己看说明;大概就是保留多少位小数;
print(round(10.619,2))  # 没有第二个参数的时候,默认是0,表示返回一个整数;第二个参数有值的时候,表示多少位小数
 
 
print('*'*50)
print('int:')
# int 把一个数字或者字符串转换为一个整数
# 
# print(help(int)) # 自己看说明,
print(int())  # 没有参数返回0
print(int(10))  # 一个数字参数返回对应的整数
print(int('100'))  # 输出100; 一个字符串参数,表示字符串中数字为10进制数字,返回对应的十进制整数
print(int('100',2))  # 输出4,表示二进制 0b100;两个参数:第一个字符串,第2个为前面字符串中字符的进制数,返回对应的十进制整数
print(int('100',3))  # 输出9,表示3进制 '100' ();
print(int('100',8))  # 输出64,表示8进制 0o100;
print(int('100',16))  # 输出256,表示16进制 0x100;
 
# int(x [,base ])
x = '100'
print(int(x, 2)) # 输出 4 ,表示x中,引号中的值为2进制数,把其转换为10进制数(2进制数100 转换为10进制数4)
print(int(x, 10)) # 输出 100,
print(int(x, 16)) # 输出256,16进制数100转换为10进制数 256
 
 
print('*'*50)
print('hex:')
# hex  把一个数字转换为16进制数,这个数字可以是2进制,8进制,10进制,16进制形式的数。
# print(help(hex))
print(hex(0b100))
print(hex(256))
print(hex(0o100))
print(hex(0x100))
 
print('*'*50)
print('bin:')
# bin  把一个数字转换为2进制数,这个数字可以是2进制,8进制,10进制,16进制形式的数。
# print(help(bin))
print(bin(0b100))
print(bin(256))
print(bin(0o100))
print(bin(0x100))
 
# print(dir(__builtins__))
 
 
x = '100'
# float(x)
print(float(x))  # 100.0
 
a = 200
print(str(a), type(str(a)))  #200 <class 'str'>
print(repr(a), type(repr(a))) #200 <class 'str'>
 
s = 'hello'
print(s,str(s))  # hello hello
print(s,repr(s))  # hello 'hello'
 
s = '10 + 30'
print(s,str(s))  # 10 + 30 10 + 30
print(s,repr(s))  # 10 + 30  '10 + 30'
print(eval(str(s)),eval(repr(s)))  #40 10 + 30
 
print(eval('10 - 20')) # -10
print(eval("'10 - 20'")) # 10 - 20
 
x = 97
print(x,chr(x)) # 97 a
 
x = 'a'
print(x,ord(x))  #a 97
 
x = 0x4e2d
print(x,chr(x)) # 20013 中
x = "中"
print(x,ord(x),hex(ord(x)))  # 中 20013 0x4e2d
print(x,ord(x),x.encode('gbk'))  # 中 20013 b'\xd6\xd0'

2.3: 向下取整除法与截断除法

import math
 
#print(help(math.floor)) 
#math.floor(x)  返回 <=x的整数 
print(math.floor(3.5))  # 输出3  
print(math.floor(-3.5)) # 输出-4
 
#print(help(math.trunc))
print(math.trunc(3.5))   # 3
print(math.trunc(-3.5))  # -3
 
 
print(7/2,7//2)    # 3.5 3
print(7/-2,7//-2)  # -3.5 -4 ; // 取小于结果的第一个整数

2.4: 随机函数

import random
 
# 查看所有方法
#print([item for item in dir(random) if not item.startswith('_') ])
 
#print(help(random.choice))
#在指定的系列内随机选取一个元素
#random.choice( seq  )  seq -- 可以是一个列表,元组或字符串。
print(random.choice([1,4,8,3,8]))
print(random.choice((8,2,5,7)))
print(random.choice('itest'))
 
 
 
#print(help(random.randrange))
# random.randrange ([start,] stop [,step])
print(random.randrange(0,20,2)) # 在 0 ,2,4,6,。。。中随机取一个元素
print(random.randrange(1,20,2)) # 在 1 3 5 7 。。。。。
print(random.randrange(100))    # 0 到 99中随机选取一个
 
#print(help(random.randint))
print(random.randint(10,20))
 
print(random.random())  # 随机生成下一个实数,它在[0,1)范围内。
#random.seed(100) # 设置随机种子
 
 
#print(help(random.shuffle))
lst = [2,4,5,7,0,4,1]
random.shuffle(lst) # 对列表进行随机排序,即随机改变列表的顺序
print(lst)
random.shuffle(lst)
print(lst)
 
# 随机产生一个浮点数
print('random.uniform(5, 10):',random.uniform(5, 10))
 
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。