附加整数以列出不将对象识别为整数的列表

Appending integers to list not recognizing objects as integers

我正在尝试使用 for 循环和 .append() 将某些值从 list1 以及一个单独的对象 object1 追加到另一个列表 list_of_all。但是,每当我尝试这样做时,我都会收到以下错误:

TypeError: list indices must be integers or slices, not Car

这是我的代码*:

*请注意,这里的list1是数组comp_carsobject1player_carlist_of_allall_times

def winner():
    all_times = [player_car.time_taken]

    for x in comp_cars:
        all_times.append(comp_cars[x].time_taken)

此代码 应该 使 all_times 数组填充不同的整数,但相反,我不断收到相同的错误。

注:time_taken数值每次变化代码为运行,随机生成

详细说明,comp_cars' time_taken 值可能是...

[40, 32, 60, 78, 99, 23]

player_car.time_taken 是...

21

对于这些示例整数,我希望 all_times 是...

[21, 40, 32, 60, 78, 99, 23]

有谁知道我该如何解决这个错误?如果是这样,请告诉我。谢谢!

编辑:这是我用来创建 comp_cars & player_car.

的一些代码
import math
import random
player_car = None
comp_cars = []
comp_players = ["Javontavius", "Jamal", "Jay Z", "Jregory", "Ja'quisha"]
comp_sponsors = ["Alfa Romeo", "Red Bull", "McLaren", "Ferrari", "Mercedes"]
class Car:
    def __init__(self, sponsor, name, speed, traction, acceleration, time_taken, skill, points):
        self.sponsor = sponsor
        self.name = name
        self.speed = speed
        self.traction = traction
        self.acceleration = acceleration
        self.time_taken = time_taken
        self.skill = skill
        self.points = points

    def get_time(self):
        temp = 100 / (math.sqrt(self.speed) +
                      math.sqrt(self.traction) / 2 +
                      math.sqrt(self.acceleration) / 2) - (self.skill / 2)

        temp = round(temp)
        return temp

def make_cars():
    temp_name = input("What do you want to name your car? ")
    player_car = Car("You", temp_name, 3, 3, 3, 1, 0)
    player_car.time_taken = player_car.get_time()

    for x in range(0, 4, 1):
        comp_cars.append(Car(comp_sponsors[get_random(0, len(comp_sponsors))], 
                             comp_players[get_random(0, len(comp_players))],  
                             get_random(2, 5),
                             get_random(2, 5),  
                             get_random(2, 5),  
                             None,  
                             get_random(1, 10),  
                                 0)) 
        comp_cars[x].time_taken = comp_cars[x].get_time()
    
def winner():
    all_times = [player_car.time_taken]
    all_owners = [player_car.name]

    for x in comp_cars:
        all_times.append(comp_cars[x].time_taken)
        all_owners.append(comp_cars[x].name)

你的问题在这里:

for x in comp_cars:
    all_times.append(comp_cars[x].time_taken)

此处x成为comp_cars中的项目,直到循环结束。这意味着您不需要使用 comp_cars[x].time_taken,而是 x.time_taken。由于 comp_cars 是一个列表而 x 不是整数或切片,因此您会得到 TypeError。