猫史档案馆


模块分享[ada]

用户:Austin4_5Austin4_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)

主要是想添加一些常用的功能


回复

上一页1 页 / 共 1下一页
尬聊boy尬聊boy

你这,每一个方法前面都写一个注释说明一下这个方法做什么的啊,不然不好白嫖(do ge )

点赞0


评论