Python全栈工程师

28.1-习题随机数生成、坐标打印、车辆管理类

2019-12-11  本文已影响0人  BeautifulSoulpy

所有的无能为力,大多是因为你不曾真正努力!

练习

1、随机整数生成类
可以指定一批生成的个数,可以指定数值的范围,可以调整每批生成数字的个数;


# 1.常规思路;实例方法
class RandomNum:
    def __init__(self,start=1,stop=100,patch=10):  # 配置基本参数;
        self.start = start
        self.stop = stop
        self.patch = patch
    
    def generate(self):  # 生成函数;
        import random
        return [random.randint(self.start,self.stop) for _ in range(self.patch)]
    
rn = RandomNum()
print(rn.generate())  # 生成随机数;
#---------------------------------------------------------------
[85, 64, 74, 45, 99, 66, 52, 29, 84, 25]


# 2. 类方法实现;常规管理;
class RandomNum:
    @classmethod
    def generate(cls,start=1,end=100,num=10):
        import random
        return [random.randint(start,end) for _ in range(num)]
print(RandomNum.generate())


# 3. 批量生成数据;
class RandomNum:
    def __init__(self,start=1,stop=100,patch=10):  # 配置基本参数;
        self.start = start
        self.stop = stop
        self.patch = patch
        self._gen = self._generate()  # 生成器对象;
    
    def _generate(self):  # 生成函数;
        import random
        count = 0
        while True:
            count += 1
            yield [random.randint(self.start,self.stop) for _ in range(self.patch)]
                
    def generate(self,count=10):
        if count > 0:
            self.patch = count
        # patch = self.patch if count <= 0 else count
        return next(self._gen)
    
rg = RandomNum()
print(rg.generate())
print(rg.generate(5))
#-----------------------------------------------------------------------------
[49, 60, 89, 43, 95, 71, 84, 14, 47, 27]
[23, 21, 54, 26, 98]

2、打印坐标
使用上题中的类,随机生成20个数字,两两配对形成二维坐标系的坐标,把这些坐标组织起来,并打印输出;

# 2、打印坐标:使用上题中的类,随机生成20个数字,两两配对形成二维坐标系的坐标,把这些坐标组织起来,并打印输出;


class RandomNum:
    def __init__(self,start=1,stop=100,patch=10):  # 配置基本参数;
        self.start = start
        self.stop = stop
        self.patch = patch
        self._gen = self._generate()  # 生成器对象;
    
    def _generate(self):  # 生成函数;
        import random
        count = 0
        while True:
            count += 1
            yield [random.randint(self.start,self.stop) for _ in range(self.patch)]
                
    def generate(self,count=10):
        if count > 0:
            self.patch = count
        # patch = self.patch if count <= 0 else count
        return next(self._gen)

class Point:
    def __init__(self,x,y):
        self.x = x
        self.y = y
        
    def getdistance(self,p):
        pass
    
rg = RandomNum()
print(rg.generate())
print('-'*40)

points = [Point(x,y) for x,y in zip(rg.generate(), rg.generate())]
print(points)        
#--------------------------------------------------------------------------------------


3、车辆信息(类的设计方法;)
记录车的品牌mark、颜色color、价格price、速度speed等特征,并实现增加车辆信息、显示全部车辆信息的功能

# 实现方式1: 不建议使用;
class Car:
    def __init__(self,mark,color,price,speed):
        self.mark = mark
        self.color = color
        self.price = price
        self.speed = speed
        
    def getcarinfo(self):
        return self.__dict__ 
    
    def __repr__(self): # 字符串形式查看;
        return '<{} {} {} {}>'.format(type(self).__name__,self.mark[:20],self.color,self.price,self.speed)
        
class CarInfo:
    cars = []
#     def __init__(self):
#         self.cars = []
#         pass
    @classmethod    #  常规管理;
    def add_car(self,car:Car):  # 类的管理
        self.cars.append(car)
        pass
        
    def get_all_car_info(self):  #信息存储;
        return self.cars
        return self.cars

#CarInfo.add_car(Car())
ci = CarInfo()  # 实例化
car = Car('Red Flag','red',200,20)
print(car)   # 查看信息 __rper__(函数)
print(str(car))
print('-'*60)
ci.add_car(car)
print(ci.get_all_car_info())   #
#------------------------------------------------------------------------------------
<Car Red Flag red 200>
<Car Red Flag red 200>
------------------------------------------------------------
[<Car Red Flag red 200>]


# 实现方式2
class Car:
    def __init__(self,mark,color,price,speed):
        self.mark = mark
        self.color = color
        self.price = price
        self.speed = speed
        
    def getcarinfo(self):
        return self.__dict__ 
    
    def __repr__(self): # 字符串形式查看;
        return '<{} {} {} {}>'.format(type(self).__name__,self.mark[:20],self.color,self.price,self.speed)
        
class CarInfo:
    # cars = []
    def __init__(self):
        self.cars = []
        pass
    #@classmethod
    def add_car(self,car:Car):  # 类的管理
        self.cars.append(car)
        pass
        
    def get_all_car_info(self):  #信息存储;
        return self.cars
        return self.cars

#CarInfo.add_car(Car())
ci = CarInfo()  # 实例化
car = Car('Red Flag','red',200,20)
print(car)   # 查看信息 __rper__(函数)
print(str(car))
print('-'*60)
ci.add_car(car)
print(ci.get_all_car_info())   #
#------------------------------------------------------
<Car Red Flag red 200>
<Car Red Flag red 200>
------------------------------------------------------------
[<Car Red Flag red 200>]

4、实现温度的处理


上一篇下一篇

猜你喜欢

热点阅读