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、实现温度的处理