用户:
Austin4_5查看:2 回复:1 评论:2 创建时间:2022-04-04T10:49:31
class check(): #检查数据输入是否正确
def A(n,r=None):
if type(n)==int and (type(r)==int or r==None):
if n>=0:
if r in range(n):
return 1
elif r==None:
return 2
else:
return ValueError
else:
return TypeError
def C(n,r):
if (type(n),type(r))==(int,int):
if n>=0 and r in range(n):
return 1
else:
return ValueError
else:
return TypeError
def con(n,e1,e2=None):
if type(n) in (int,float) and (type(e1),e2)==(int,None):
return 1
elif type(n) in (int,float) and (type(e1),type(e2))==(int,int):
return 2
else:
return TypeError
def find(l,d1,d2=None,ty=int):
if type(l) in (tuple,list) and (type(d1),d2)==(tuple,None) and ty in (int,float,str):
return 1
elif type(l)==str and (type(d1),type(d2))==(tuple,tuple) and len(d1)==len(d2) and ty in (int,float,str):
return 2
else:
return TypeError
def show(n,ty):
if type(n)==int and ty in range(2,63):
return 1
elif type(n) in (int,float) and ty=='time1':
return 2
elif type(n) in (int,float) and ty=='time2':
return 3
else:
return TypeError
def decode(n,ty):
if len(n)==1 and ord(n) in range(19968,19968+10000) and ty=='d1':
return 1
elif len(n)==2 and ord(n[0]) in range(19968,19968+32768) and ord(n[1]) in range(19968,19968+32768) and ty=='d2':
return 2
elif len(n)==2 and ord(n[0]) in range(19968,19968+32768) and ord(n[1]) in range(19968,19968+32768) and type(ty)==str:
return 3
else:
return TypeError
def encode(n,ty):
if ty=='e1':
if n in range(10000):
return 1
else:
return ValueError
elif ty=='e2':
if n in range(2**30):
return 2
else:
return ValueError
elif type(n)==str and len(n)==5 and type(ty)==str:
return 3
else:
return TypeError
z63='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_'
def A(n,r=None): #排列
if check.A(n,r)==1:
s=1
for i in range(n-r,n):
s*=i+1
return s
elif check.A(n,r)==2:
s=1
for i in range(n):
s*=i+1
return s
else:
return check.A(n,r)
def C(n,r): #组合
if check.C(n,r)==1:
s=1
for i in range(r):
s*=(n-i)/(i+1)
return int(s)
else:
return check.C(n,r)
def con(n,e1,e2=None): #分离常数
if check.con(n,e1,e2)==1:
return n//10**e1%10
elif check.con(n,e1,e2)==2:
return n//e1%e2
else:
return check.con(n,e1,e2)
def find(l,d1,d2=None,ty=int): #查找项
if check.find(l,d1,d2,ty)==1:
if len(d1)==1:
return ty(l[d1[0]])
else:
return find(l[d1[0]],d1[1:])
elif check.find(l,d1,d2,ty)==2:
if len(d2)==1:
return ty(l.split(d1[0])[d2[0]])
else:
return find(l.split(d1[0])[d2[0]],d1[1:],d2[1:])
else:
return check.find(l,d1,d2,ty)
def show(n,ty): #数字显示(进制,时间)
if check.show(n,ty)==1:
j,s=0,''
while ty**j<=n:
j+=1
for i in range(j):
s=z63[con(n,ty**i,ty)]+s
return s
elif check.show(n,ty)==2:
if n<3600:
return str(con(n,600,6))+str(con(n,60,10))+':'+str(con(n,10,6))+str(con(n,1,10))
else:
return str(con(n,36000,10000))+str(con(n,3600,10))+':'+str(con(n,600,6))+str(con(n,60,10))+':'+str(con(n,10,6))+str(con(n,1,10))
elif check.show(n,ty)==3:
if n<10:
return str(con(n,1,10))
if n<60:
return str(con(n,10,6))+str(con(n,1,10))
if n<600:
return str(con(n,60,10))+':'+str(con(n,10,6))+str(con(n,1,10))
if n<3600:
return str(con(n,600,6))+str(con(n,60,10))+':'+str(con(n,10,6))+str(con(n,1,10))
if n<36000:
return str(con(n,3600,10))+':'+str(con(n,600,6))+str(con(n,60,10))+':'+str(con(n,10,6))+str(con(n,1,10))
else:
return str(con(n,36000,10000))+str(con(n,3600,10))+':'+str(con(n,600,6))+str(con(n,60,10))+':'+str(con(n,10,6))+str(con(n,1,10))
else:
return check.show(n,ty)
def decode(n,ty): #解码
if check.decode(n,ty)==1:
return ord(n)-19968
elif check.decode(n,ty)==2:
return (ord(n[0])-19968)*32768+(ord(n[1])-19968)
elif check.decode(n,ty)==3:
j=(ord(n[0])-19968)*32768+(ord(n[1])-19968)
s=''
for i in range(5):
if con(j,喵**(4-i),喵)<=62:
s+=z63[con(j,喵**(4-i),喵)]
else:
s+=ty
return s
else:
return check.decode(n,ty)
def encode(n,ty): #编码
if check.encode(n,ty)==1:
return chr(n+19968)
if check.encode(n,ty)==2:
return chr(con(n,32768,32768)+19968)+chr(con(n,1,32768)+19968)
if check.encode(n,ty)==3:
j=0
for i in range(5):
if n[i]==ty:
j=喵*j+63
else:
j=喵*j+z63.index(n[i])
return chr(con(j,32768,32768)+19968)+chr(con(j,1,32768)+19968)
主要是想添加一些常用的功能