要求: 可以指定一批生成的个数,可以指定数值的范围,可以调整每批生成数字的个数。
代码1:
#schemes optimization one
import random
class Randomint: #对象
def __init__(self,count=10,start=1,stop=100):
self.count = count
self.start = start
self.stop = stop
def genint(self):
return [random.randint(self.start,self.stop) for _ in range(self.count)]
list_a = Randomint(5,20,100) #可以传参控制输出个数和范围。
list_a.genint()
执行结果:
[78, 73, 62, 50, 22]
代码2:
#schemes optimization two
import random
class RandomInt2: #工具类
@classmethod
def genint(cls,count=10,start=1,stop=100):
return [random.randint(start, stop) for _ in range(count)]
RandomInt2.genint() #可以传参控制输出个数和范围。
执行结果:
[60, 35, 17, 3, 40, 24, 75, 68, 7, 90]
代码3:
#schemes optimization three
import random
class Randomint3: #对象
def __init__(self,count=10,start=1,stop=100):
self._count = count
self.start = start
self.stop = stop
def genint(self,count=0):
count = self._count if count<=0 else count #如果小于0用类属性默认值,如果大于0用传参的count
return [random.randint(self.start,self.stop) for _ in range(count)]
ri = Randomint3(start=55,stop=100) #可以传参控制输出个数和范围。
ri.genint(5) #可以传参控制输出个数。
执行结果:
[85, 82, 64, 61, 56]
代码4:
#schemes optimization four
import random
class Randomint4: #对象
def __init__(self,count=10,start=1,stop=100):
self._count = count
self.start = start
self.stop = stop
def _generate(self):
#生成器,无限生成,要多少不在这里处理。
while True:
yield random.randint(self.start,self.stop)
def generate(self):
#这里控制取值次数。
return [next(self._generate()) for _ in range(self._count)]
ri = Randomint4(5,15,55) #可以传参控制输出个数和范围。
print(ri.generate())
执行结果:
[53, 33, 49, 49, 16]
代码5:
#schemes optimization five
import random
class Randomint5: #对象
def __init__(self,count=10,start=1,stop=100):
self._count = count
self.start = start
self.stop = stop
self._gen = self._generate() #加到类方法里,【生成器对象】。
def _generate(self):
#生成器,无限生成,要多少不在这里处理。
while True:
yield random.randint(self.start,self.stop)
def generate(self):
#用next调生成器对象
return [next(self._generate()) for _ in range(self._count)]
ri = Randomint5(15,5,50) #可以传参控制输出个数和范围。
print(ri.generate())
执行结果:
[5, 34, 29, 48, 42, 48, 38, 42, 45, 23, 31, 25, 46, 44, 21]
代码6:
#schemes optimization six
import random
class Randomint6: #对象
def __init__(self,count=10,start=1,stop=100):
self._count = count
self.start = start
self.stop = stop
self._gen = self._generate() #生成器对象。
def _generate(self):
#生成器,无限生成,要多少不在这里处理。
while True:
yield [random.randint(self.start,self.stop) for _ in range(self._count)]
def generate(self,count=0):
if count > 0:
self._count = count
return next(self._gen)
ri = Randomint6(start=100,stop=900)#可以传参控制输出个数和范围。
print(ri.generate(5)) #可以传参控制输出个数.
执行结果:
[575, 828, 531, 378, 713]
2、打印坐标:代码:
import random
class Randomint7:
def __init__(self,count=10,start=1,stop=100):
self._count = count
self.start = start
self.stop = stop
self._gen = self._generate() #生成器对象
def _generate(self):
#用生成器的无限生成,要多少不在这里控制。
while True:
yield [random.randint(self.start,self.stop) for _ in range(self._count)]
def generate(self,count=0): #这里做控制判断
if count >0:
self._count = count
# return next(self._gen)
ret = next(self._gen)
return ret
ri = Randomint7()
class Point:
def __init__(self,x,y):
self.x = x
self.y = y
def __repr__(self):
return ''.format(self.x,self.y)
#===================================================================#
# points = [Point(k,v) for k,v in zip(ri.generate(),ri.generate())] #两种表现形式。
points = [Point(*v) for v in zip(ri.generate(),ri.generate())]
#===================================================================#
#下面是三种显示方式:
# print('第一种方法',points,len(points))
#=========================
# for x in points:
# print('第二种方法',x)
#=========================
for point in points:
print('第三种方法:'.format(point.x,point.y))
执行结果:
第三种方法:
第三种方法:
第三种方法:
第三种方法:
第三种方法:
第三种方法:
第三种方法:
第三种方法:
第三种方法:
第三种方法:
3、 车辆信息。要求:记录力的品牌mark,颜色color、价格price、速度speed等特征,并实现增加车辆信息、显示全部车辆信息的功能。
代码:
class Car: #你管理车辆的抽象。
id = 0 #原始编号赋值。
@classmethod
def genid(cls): #记录录入洗车编号。
cls.id =cls.id + 1
def __init__(self, mark, speed, color, price=-1, **kargs):
self.id = self.genid()
self.mark = mark
self.speed = speed
self.color = color
self.price = price
self.__dict__.update(kargs)
self.properties = kargs
def __repr__(self):
return (''.format(self.mark,self.speed,self.color,self.price,self.properties))
class CarInfo: # 车辆信息管理
cars = []
def addcar(self, *cars): # 增加车辆信息
return self.cars.extend(cars)
def getall(self): # 显示车辆全部信息
return self.cars
print(Car.id)
car1 = Car('red flag', 100, 'red', price=15000, made='china')
print(Car.id)
car2 = Car('audi', 230, 'black', price=260000, made='germany')
print(Car.id)
ci = CarInfo()
# ci.addcar(car1)
# ci.addcar(car2)
ci.addcar(car1, car2)
print(ci.getall()) # 查看全部车辆信息
print('=============================================================================================')
执行结果:
0
1
2
[, ]
=====================================================================================================
4、 实现温度的处理。
要求:实现华氏温度和摄氏温度的转换。
完成以上转换后,增加与开氏温度的转换,K=℃+273.15
# ℃=5x(℉-32)/9
# ℉=9x℃/5+32
# K=℃+273.15
代码:
执行结果: