Я пытаюсь добавить другую информацию в связанный список Python и распечатать его, но, похоже, произошла ошибка. Я хочу напечатать идентификатор, музыку и имя исполнителя. Это моя ошибка.
Traceback (most recent call last):
File "d:\DSAG\DSAG coding\tempCodeRunnerFile.py", line 101, in <module>
for i in range (0,LinkedList.len_link()):
TypeError: len_link() missing 1 required positional argument: 'list'
Это мой код:
class Node :
def __init__(self, newData=None, nextNode=None):
self.data = newData
self.next = nextNode
def getData(self):
return self.data
def setData(self,newData):
self.data = newData
def getNext(self):
return self.next
def setNext(self,newNode):
self.next = newNode
class music :
def __init__(self, ID, musicname, artistname):
self.ID = ID
self.musicname = musicname
self.artistname = artistname
def printlist(self):
print("ID : " + format(self.ID))
print("Music : " + format(self.musicname))
print("Artist : " + format(self.artistname))
class LinkedList :
def __init__(self):
self.head = None
self.size=0
def next(self,newNode):
self.head = newNode
def len_link(list):
temp=list.head
count=0
while(temp):
count+=1
temp=temp.next
return count
def printAll(self):
node = None
if self.head is not None:
node = self.head
print(node.getData())
while(node.getNext() is not None):
node = node.getNext()
print(node.getData())
def AddMusicToTheFront(self,data):
if (self.head==None):
newnode=Node(data)
self.head=newnode
else:
current=self.head
while(current.next!=None):
current=current.next
current.next=Node(data)
self.size=self.size+1
def AddMusicAtPosition (self, data, position):
if (position==0):
newnode=Node(data)
newnode.next=self.head
self.head=newnode
elif (position>self.size):
print("\nOut of Range\n")
elif (position==self.size):
self.AddMusicToTheFront(data)
else:
current=self.head
count=0
while(current!=None):
if (count==position-2):
break
else:
count+=1
current=current.next
newnode=Node(data)
newnode.next=current.next
current.next=newnode
list = LinkedList()
list.AddMusicToTheFront(music(1, "Lauv", "Chasing Fire"))
list.AddMusicToTheFront(music(2, "Panic! At The Disco", "High Hopes"))
list.AddMusicToTheFront(music(3, "Bishop Briggs", "River"))
list.AddMusicAtPosition(music(4,"Why Don't We", "Hooked"),2)
for i in range (0,LinkedList.len_link()):
music.printlist()
Это мой желаемый результат:
ID:1
Artist : Lauv
Music : Chasing Fire
^ Этот код будет таким же для остальной информации, которую я включу позже
@ParitoshSingh, хорошо, я понимаю, и мне нужно изменить его, но в настоящее время у меня есть ошибка, указывающая на music.printlist()
тогда вы можете задать другой вопрос.






Вероятно, вам нужно определить len_link следующим образом:
def len_link(self):
temp=self.head
count=0
while(temp):
count+=1
temp=temp.next
return count
Затем вы можете создать экземпляр объекта LinkedList (ll=LinkedList()), а затем вызвать len_link(), как этот ll.len_link().
Итак, ваш код будет выглядеть так:
ll = LinkedList()
ll.AddMusicToTheFront(music(1, "Lauv", "Chasing Fire"))
ll.AddMusicToTheFront(music(2, "Panic! At The Disco", "High Hopes"))
ll.AddMusicToTheFront(music(3, "Bishop Briggs", "River"))
ll.AddMusicAtPosition(music(4,"Why Don't We", "Hooked"),2)
for i in range (0,ll.len_link()):
music.printlist()
хорошо, я понимаю, но у меня есть ошибка, которая указывает на (music.printlist ()). Я не совсем уверен, как это исправить.
for i in range (0,LinkedList.len_link(list)): music.printlist() #pass list in the len_link finction
И музыку не ставят. он может получить ошибку, потому что музыка никогда не запускалась и не имеет атрибутов, поэтому при попытке печати произойдет ошибка.
вам нужно извлечь элемент из списка, который является музыкальным объектом, а затем вызвать этот объект printlist()
Мне очень жаль, но я не слишком уверен в извлечении элемента.
не используйте
listв качестве имени переменной или параметра функции. взгляните на свою функцию len_link, она ожидает аргумент списка.