Ханойская башня, ошибка индекса
я делаю знаменитую игру "Ханойская башня", и у меня есть ошибка, когда я запускаю свой код. Итак, когда я запускаю его, вызывается IndexError: list index out of range, в строке 17, которая является " if new_disk <= self.content[0]:" в add_method.
Я видел, что Indexerror может быть вызван, если значение не находится в списке или вне диапазона, но я не знаю, в чем проблема в моем случае. Вот мой код:
Что я уже пробовал:
class HanoiT(): def __init__(self, content=None): if content is None: self.content=[] else: self.content=content def addmethod(self, new_disk): #Add an element on the beginning of the list if new_disk <= self.content[0]: self.content.insert(0, new_disk) else: raise ValueError("No disk may be placed on top of a smaller disk") def deletemethod(self): #Delete the first element of a list self.content.pop(0) def affichage(self): #Method to print the list which represent the "disk" putted on the tower from the top to bottom for i in self.content: print(i, end=" ") def movedisk(self, Tsource, Ttarget): Ttarget.addmethod(Tsource.content[0]) Tsource.deletemethod() def movetower(self, N, Tour1, Tour3, Tour2): if N >= 1: self.movetower(N-1, Tour1, Tour2, Tour3) self.movedisk(Tour1, Tour3) self.movetower(N-1, Tour2, Tour3, Tour1) N = 4 Tour1 = HanoiT([x for x in range(1, N+1)]) Tour1.affichage() Tour2 = HanoiT([]) Tour3 = HanoiT([]) h = HanoiT() h.movetower(N, Tour1, Tour2, Tour3)
Richard MacCutchan
Потому что self.content ничего не содержит.