河内塔TypeError:'type'对象不可下标

时间:2018-10-13 11:01:01

标签: python compiler-errors

我正在寻找一种算法,可以计算使用OOP对河内塔进行多少步操作。

有两类,棒和盘。我希望使磁盘成为每个杆实例中列表的一部分。

错误:

  

“ TypeError:'类型'对象不可下标”

当我尝试将磁盘实例添加到Rod实例的列表中时,发生了上述错误。

我检查了什么类型错误,但是我不认为我使用了Python的任何内置类型名称。

class rod:
    def __init__(self,disks=[]):
        self.diskslist=disks

    def remove_top(self):
        return self.disks.pop(-1)

    def add_to_top(self,disk):
        self.diskslist.extend(disk)

class disk:
    def __init__(self,size):
        self.size=size

disks=[]
for i in range(8):
    disks.append(disk(i))
#Generating 8 disks of increasing size

rods=[]
for i in range(3):
    rods.append(rod())
#Generating 3 rods

for i in range(len(disks)):
    rod[0].add_to_top(disks[I])
#Trying to add all the disks to the leftmost rod. This is where I get my type error.

1 个答案:

答案 0 :(得分:1)

代替

rod[0].add_to_top(disks[I])

使用

rods[0].add_to_top(disks[I])

({rods而非rod)。