python习题——随机整数生成类

随机整数生成类

可以先设定一批生成数字的个数,可设定指定生成的数值的范围

1.普通类实现
import random
import random


class RandomGen:
    def __init__(self, start=1, stop=100, count=100):
        self.start = start
        self.stop = stop
        self.count = count
        
    def generate(self):
        return [random.randint(self.start, self.stop) for i in range(self.count)]
    
    
print(RandomGen().generate())
2.作为工具类来实现,提供类方法
import random


class RandomGen:
    @classmethod
    def generate(self, start=1, stop=100, count=10):
        return [random.randint(start, stop) for i in range(count)]


print(RandomGen().generate())

2. 生成器实现1
import random


class RandomGen:
    def __init__(self, start=1, stop=100, count=100):
        self.start = start
        self.stop = stop
        self.count = count
        self._gen = self._generate()

    def _generate(self):
        while True:
            yield random.randint(self.start, self.stop)
            
    def generate(self):
        return [next(self._gen) for i in range(self.count)]


print(RandomGen().generate())
2. 生成器实现2
import random


class RandomGen:
    def __init__(self, start=1, stop=100, count=100):
        self.start = start
        self.stop = stop
        self.count = count
        self._gen = self._generate()

    def _generate(self):
        while True:
            yield random.randint(self.start, self.stop)

    def generate(self):
        yield from (next(self._gen) for i in range(self.count))


print(list(RandomGen().generate()))
2. 生成器实现3
import random


class RandomGen:
    def __init__(self, start=1, stop=100, count=100):
        self.start = start
        self.stop = stop
        self.count = count
        self._gen = self._generate()

    def _generate(self):
        while True:
            yield random.randint(self.start, self.stop)

    def generate(self, count=0):  # 可以在后期生产数据时控制个数
        count = self.count if count <= 0 else count
        return [next(self._gen) for i in range(self.count)]


print(RandomGen().generate(5))
print(RandomGen().generate())
2. 生成器实现4
import random


class RandomGen:
    def __init__(self, start=1, stop=100, count=100):
        self.start = start
        self.stop = stop
        self._count = count
        self._gen = self._generate()

    def _generate(self):
        while True:  # 一次yield 一批
            yield [random.randint(self.start, self.stop) for _ in range(self._count)]

    def generate(self, count=0):  # 可以在后期生产数据时控制个数
        if count > 10:
            self._count = count
        return next(self._gen)


print(RandomGen().generate(5))
print(RandomGen().generate())
2. 生成器实现5
import random


class RandomGen:
    def __init__(self, start=1, stop=100, count=100):
        self.start = start
        self.stop = stop
        self._count = count
        self._gen = self._generate()

    def _generate(self):
        while True:  # 一次yield 一批
            yield [random.randint(self.start, self.stop) for _ in range(self._count)]

    def generate(self):  # 可以在后期生产数据时控制个数
        return next(self._gen)

    @property
    def count(self):
        return self._count
        
    @count.setter
    def count(self, count):
        self._count = count
        
r = RandomGen()
print(r.count)
print(r.generate())
r.count = 3
print(r.generate())
原文地址:https://www.cnblogs.com/duanming/p/11830283.html