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
print(repr(a), type(repr(a))) #200
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))