Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从对象中获得最大速度?他们有没有办法让这段代码更有效率?_Python - Fatal编程技术网

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.

我是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.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是必需的