附加整数以列出不将对象识别为整数的列表
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_cars
,object1
是player_car
,list_of_all
是all_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。
我正在尝试使用 for 循环和 .append() 将某些值从 list1 以及一个单独的对象 object1 追加到另一个列表 list_of_all。但是,每当我尝试这样做时,我都会收到以下错误:
TypeError: list indices must be integers or slices, not Car
这是我的代码*:
*请注意,这里的list1
是数组comp_cars
,object1
是player_car
,list_of_all
是all_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。