猫史档案馆


【Python作品分享】随机

用户:小麦做的面包小麦做的面包查看:0 回复:0 评论:0 创建时间:2022-07-20T10:21:25


【作品展示】

center_image

 

【作品介绍】

动机是以前一直想做一个用概率算的分支(此代码的Branch类),但是也能干别的用(如封面),有用的话可以加到lab里就能直接import了

 

【作品源代码】

import random
# from objprint import op

class Probability:
    '''
    Probability object has 4 syntax to initialize:
    1. Probability(kwargs_dict)
    2. Probability(__else__,kwargs_dict)
    3. Probability(**kwargs)
    4. Probability(__else__,**kwargs)
    '''
    def __init__(self, __else__=None,kwargs_dict={},**kwargs):
        if type(__else__)==dict:
            kwargs_dict=__else__
            __else__=None
        if not kwargs_dict and not kwargs:
            raise ValueError('__init__() must take one argument between dict and **kwargs(0 given)')
        if kwargs_dict and kwargs:
            raise ValueError('__init__() takes only one argument between dict and **kwargs(2 given)')
        if kwargs_dict:
            kwargs=kwargs_dict
        total = 0
        for key in kwargs:
            total+=kwargs[key]
        if total>100:
            raise ValueError('The sum of the argment of __init__() must less than or equal to 100')
        self.pros=kwargs
        self.__else__=__else__
        self.total=total
        self.diary={}
    def get(self):
        num=random.random()*100
        now=0
        geted=self.__else__
        for key in self.pros:
            if now100:
            raise ValueError('The sum of the argment of __init__() must less than or equal to 100')

        self.pros=pros
        self.total=total

class Average_Probability(Probability):
    '''
    Average_Probability object has 2 syntax to initialize:
    1. Average_Probability(args_list)
    2. Average_Probability(*args)
    '''
    def __init__(self, args_list=[], *args):
        if not args_list and not args:
            raise ValueError('__init__() must take one argument between list and *args(0 given)')
        if args_list and args and type(args_list)==list:
            raise ValueError('__init__() takes only one argument between list and *args(2 given)')
        if args_list and type(args_list)==list:
            args=args_list
        if type(args_list)!=list:
            print(args)
            args=list(args)
            args.append(args_list)
        pros={}
        for i in args:
            pros[i]=100/len(args)
        self.pros=pros
        self.__else__=None
        self.total=len(args)
        self.diary=[]
    
    def append(self,args_list=[],*args):
        if not args_list and not args:
            raise ValueError('__init__() must take one argument between list and *args(0 given)')
        if args_list and args and type(args_list)==list:
            raise ValueError('__init__() takes only one argument between list and *args(2 given)')
        if args_list and type(args_list)==list:
            args=args_list
        if type(args_list)!=list:
            args=list(args)
            args.append(args_list)
        args+=list(self.pros.keys())
        args=set(args)
        pros={}
        for i in args:
            if i not in pros:
                pros[i]=100/len(args)
        self.pros=pros
        self.total=len(args)


class randrange(Probability):
    def __init__(self, start, stop=None, step=None):
        self.start=start
        self.stop=stop
        self.step=step
    
    def get(self):
        if self.step:
            return random.randrange(self.start,self.stop,self.step)
        if self.stop:
            return random.randrange(self.start,self.stop)
        return random.randrange(self.start,self.stop,self.step)
    
    def __str__(self):
        return str(self.get())

class Branch(Probability):
    '''
    bra=Branch(10,30,25).get()
    if bra==0:
        pass
    elif bra==1:
        pass
    elif bra==2:
        pass
    else:
        pass
    '''
    def __init__(self,*args):
        super().__init__('else',{i:args[i] for i in range(len(args))})

if __name__=='__main__':
    p = Probability({1:1,2:2,3:3,4:90})
    print(p.get())
    p.append({5:4})
    p.test()
    # op(p)

 

【提示】

部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:

https://python.codemao.cn


回复

上一页1 页 / 共 0下一页