Это мой (сокращенный) код.
race1names = ["Jeff", "Paul", "Mark"]
race1odds = [5, 6, 7]
class Horse:
def __init__(self, name, odds, age, weight):
self.name = name
self.odds = odds
self.age = age
self.weight = weight
def Horsecreate():
hcount = 0
horse = {}
while hcount < 3:
cname = race1names[hcount]
codds = race1odds[hcount]
cage = 3
cweight = 3
for i in range(0, 3):
horse[i] = Horse(cname, codds, cage, cweight)
hcount +=1
Horsecreate()
print(horse0.name)
print(horse1.name)
Моя ошибка:
File "file.exe", line 26, in <module>
print(horse0.name)
NameError: name 'horse0' is not defined
Я попробовал несколько вещей, но безрезультатно. Насколько мне известно, это должно работать?
Обновление
Просмотрев оба ваших ответа, я изменил несколько вещей с помощью кода. Новая ошибка.
Кроме того, я не прояснил свои намерения. Я в основном хочу запустить эту функцию, которая будет рекурсивно извлекать различные переменные, добавляя их к новому экземпляру класса вместе как новый «конный актер», если это имеет смысл (я довольно новичок в кодировании).
В этом случае я хочу, чтобы он создал лошадь [0], которая будет "Джефф", с коэффициентом 5.
лошадь [1], которая будет иметь шансы 6
и лошадь [2], которая будет иметь шансы 7
(из двух простых тестовых списков "race1names" и "race1odds")
В конечном счете, я бы хотел иметь несколько лошадей со своими независимыми ценностями. Однако это всего лишь тестовый сценарий, более сложный будет добавлен позже.
Обновленный код:
race1names = ["Jeff", "Paul", "Mark"]
race1odds = [5, 6, 7]
horse = {}
class Horse:
def __init__(self, name, odds, age, weight):
self.name = name
self.odds = odds
self.age = age
self.weight = weight
def Horsecreate():
for i in range(0, 2):
cname = race1names[i]
codds = race1odds[i]
cage = 3
cweight = 3
horse[i] = Horse(cname, codds, cage, cweight)
return horse
horse = Horsecreate()
print(horse[0].name)
print(horse[1].name)
print(horse[2].name)
С ошибкой:
Jeff
Traceback (most recent call last):
File "file", line 27, in <module>
print(horse[1].name)
KeyError: 1
Что выглядит довольно просто, но, опять же, предпринято несколько попыток, ни одна из которых не сработала.
Примечательно, что «Джефф» напечатан, показывая его вид работ.
После удаления возврата он теперь дает мне:
Traceback (most recent call last):
File "file", line 26, in <module>
print(horse[0].name)
TypeError: 'NoneType' object is not subscriptable
Спасибо, очень благодарна за быструю помощь
В ответ на @gilch я удалил переназначение и вернулся. Теперь выдает ошибку:
print(horse[0].name)
KeyError: 0
Как будто он не назначен.
Вот текущий код:
race1names = ["Jeff", "Paul", "Mark"]
race1odds = [5, 6, 7]
global horse
horse = {}
class Horse:
def __init__(self, name, odds, age, weight):
self.name = name
self.odds = odds
self.age = age
self.weight = weight
def Horsecreate():
for i in range(0, 2):
cname = race1names[i]
codds = race1odds[i]
cage = 3
cweight = 3
horse[i] = Horse(cname, codds, cage, cweight)
print(horse[0].name)
print(horse[1].name)
print(horse[2].name)