#python-3.x
#python-3.x
Вопрос:
Я пишу односвязный список, который подсчитывает количество слов, импортируемых из тестового файла. Я инициализировал count внутри своего класса. Я определил функцию печати, которая выводит каждый из узлов после их сортировки. Я определил класс count для перебора списка и подсчета всех вхождений слова, переданного ему.
Я хочу передать каждый узел в count, чтобы подсчитать, сколько раз он появляется в моем текстовом файле. Когда я пытаюсь это сделать, в итоге получается, что объект ‘int’ не вызывается. Вот мой код
class Linked_List:
def __init__(self):
self.head = None
self.count = 1
def print(self):
p = self.head
head = Linked_List_node(p.data)
while p is not None:
print(p.data, '-', self.count(p.data)) # This is where the error appears
p = p.next
def count(self, x):
# loop thru list for all x, if find x add 1 to count. Assign final count to that word.
with open('cleaned_test.txt', 'r') as f:
for line in f:
for word in line.split():
if word == x:
self.count = 1
def insert(self, x):
""""""
p = self.head
q = None
done = False
while not done:
if self.head == x:
done = True
elif p == None:
head = Linked_List_node(x)
q.next = head
done = True
elif x == p.data:
#head = Linked_List_node(x)
#head.counter = 1
done = True
elif x < p.data:
if self.head == p:
head = Linked_List_node(x)
head.next = p
self.head = head
done = True
else:
head = Linked_List_node(x)
head.next = p
q.next = head
done = True
q = p
if p is not None:
p = p.next
class Linked_List_node:
def __init__(self, value):
self.data = value
self.next = None
Комментарии:
1. Пожалуйста, добавьте трассировку стека из сообщения об ошибке к вашему вопросу.
2. Что вы имеете в виду трассировку стека? как файл «linked_list.py «, строка 19, в печати print(p.data, ‘-‘, self.count(p.data)) Ошибка типа: объект ‘int’ не может быть вызван
3. Да, это трассировка стека. Как правило, это помогает обеспечить полный вывод того, что произошло при запуске вашей программы.
4. Кроме того, что
self.count(p.data)
должно означать?5. Я хочу подсчитать, сколько раз слово появляется в текстовом файле. Я определил count как функцию, поэтому я передаю p.data в функцию, count (self, x) . p.data — это текущий узел или слово внутри текстового документа.
Ответ №1:
Соответствующая часть вашего кода:
class Linked_List:
def __init__(self):
# ...
self.count = 1
def count(self, x):
# ...
self.count = 1
Присваивание перезаписывает значение self.count
для каждого Linked_List
созданного объекта, поэтому оно ссылается на 1
вместо метода, который вы определили в классе. Переименуйте либо переменную, либо функцию.
Комментарии:
1. Спасибо! Я думал, что это была просто такая ошибка, ха-ха