Python 如何从对象中获得最大速度?他们有没有办法让这段代码更有效率?
我是python新手,这里我创建了一个类来计算速度,现在我只需要一种从对象中找到最大速度的方法Python 如何从对象中获得最大速度?他们有没有办法让这段代码更有效率?,python,Python,我是python新手,这里我创建了一个类来计算速度,现在我只需要一种从对象中找到最大速度的方法 class CarSpeed: def __init__(self,name,dist,time): self.dist=dist self.time=time self.name=name def ans(self): speed= self.dist/self.time print(self.
class CarSpeed:
def __init__(self,name,dist,time):
self.dist=dist
self.time=time
self.name=name
def ans(self):
speed= self.dist/self.time
print(self.name,"_Speed ""(",self.dist,"/",self.time,"):",speed,"\n")
Ford=CarSpeed("Ford",120,1.75)
Ford.ans()
Ferrari=CarSpeed("Ferrari",100,1.20)
Ferrari.ans()
BMW=CarSpeed("BMW",205,2.35)
BMW.ans()
Porsche=CarSpeed("Porsche",155,1.85)
Porsche.ans()
Audi=CarSpeed("Audi",190,2.10)
Audi.ans()
Jaguar=CarSpeed("Jaguar",255,2.45)
Jaguar.ans()
我需要这样的输出:
速度最高的汽车是:汽车品牌试试这个
class CarSpeed:
def __init__(self,name,dist,time):
self.dist=dist
self.time=time
self.name=name
def ans(self):
speed= self.dist/self.time
return speed
speed_list = {}
Ford=CarSpeed("Ford",120,1.75)
speed_list.update({Ford.name: Ford.ans()})
Ferrari=CarSpeed("Ferrari",100,1.20)
speed_list.update({Ferrari.name: Ferrari.ans()})
BMW=CarSpeed("BMW",205,2.35)
speed_list.update({BMW.name: BMW.ans()})
Porsche=CarSpeed("Porsche",155,1.85)
speed_list.update({Porsche.name: Porsche.ans()})
Audi=CarSpeed("Audi",190,2.10)
speed_list.update({Audi.name: Audi.ans()})
Jaguar=CarSpeed("Jaguar",255,2.45)
speed_list.update({Jaguar.name: Jaguar.ans()})
print(dict([max(speed_list)]))
您可以这样做:
class CarSpeed:
def __init__(self,name,dist,time):
self.dist=dist
self.time=time
self.name=name
@property
def ans(self):
speed = self.dist/self.time
return speed
cars = []
cars.append(CarSpeed("Ford",120,1.75))
cars.append(CarSpeed("Ferrari",100,1.20))
cars.append(CarSpeed("BMW",205,2.35))
cars.append(CarSpeed("Porsche",155,1.85))
cars.append(CarSpeed("Audi",190,2.10))
cars.append(CarSpeed("Jaguar",255,2.45))
fastest = max(cars, key=lambda x: x.ans)
print('The car with the highest speed is: ,'fastest.name, fastest.ans)
输出将是:
The car with the highest speed is Jaguar 104.08163265306122
您可以使用max函数来实现 您还可以将
speed
更改为self.speed
,并将其无值添加到init
class CarSpeed():
def __init__(self,name,dist,time):
self.dist=dist
self.time=time
self.name=name
self.speed = None
def ans(self):
self.speed = self.dist/self.time
print(self.name,"_Speed ""(",self.dist,"/",self.time,"):",self.speed,"\n")
然后,您可以通过将self.speed=None
替换为self.speed=self.ans()
所以完整的代码如下所示
class CarSpeed:
def __init__(self, name, dist, time):
self.dist = dist
self.time = time
self.name = name
self.speed = self.ans()
def ans(self):
self.speed = self.dist/self.time
return self.speed
speed_list = {}
Ford = CarSpeed("Ford", 120, 1.75)
speed_list.update({Ford.name: Ford.speed})
Ferrari = CarSpeed("Ferrari", 100, 1.20)
speed_list.update({Ferrari.name: Ferrari.speed})
BMW = CarSpeed("BMW", 205, 2.35)
speed_list.update({BMW.name: BMW.speed})
Porsche = CarSpeed("Porsche", 155, 1.85)
speed_list.update({Porsche.name: Porsche.speed})
Audi = CarSpeed("Audi", 190, 2.10)
speed_list.update({Audi.name: Audi.speed})
Jaguar = CarSpeed("Jaguar", 255, 2.45)
speed_list.update({Jaguar.name: Jaguar.speed})
fastest = max(speed_list, key=speed_list.get)
print(f"{fastest} is the fastest car")
您可能想了解列表:代码运行成功,我只是无法找到获得最大速度值的方法+请记住正确编写代码。它将在将来帮助您;)阅读pep8documentation@GROOT见我编辑的帖子。我把所有代码都放在那里了。嗨!这很完美,但我还是python的初学者,所以我不知道“@property”和“faster”中的赋值是什么意思。。。谢谢你的帮助,tho:)看看这个:嘿,谢谢!。。我运行它时出错,原因是..-------------------------------------------------------------31 speed_list.update({Jaguar.name:Jaguar.ans()})中的ValueError回溯(最后一次调用)32--->33打印(dict([max(speed_list)])ValueError:字典更新序列元素#0的长度为7;2是必需的