Я пытаюсь создать функцию сортировки, чтобы упорядочивать слова по длине, поэтому первым шагом является поиск самого длинного слова.
Для этого я создал следующий код, он работает какпредполагалось, но есть ошибка, которая привлекла мое внимание, и я пытаюсь выяснить, что ее вызывает.
После замены слова буфер всегда будет читать следующую строку, как если бы она была пустой, но в конечном итогедойти до следующего слова, но это будет свидетельствовать о том, что чтение было выполнено не в той строке.
def sort():
f = open("source.txt","r")
w = open("result.txt","a+")
word = ''
og_lines = sum(1 for line in open('source.txt'))
print("Sorting",og_lines,"words...")
new_lines = 1
lenght = 0
word = f.readline(new_lines)
new_lines+=1
buffer=f.readline(new_lines)
while (buffer != ''):
if (len(buffer)>len(word)):
word=buffer
print("change")
new_lines+=1
print(new_lines, "lines read")
buffer=f.readline(new_lines)
buffer.rstrip()
lenght = len(word.rstrip())
print("Longest word is",word.rstrip(),lenght)
Предполагается прочитать 25 строк, но, поскольку по пути было найдено более длинное слово 4 раза, в конечном итоге оно прочиталонесуществующая строка 29 и все же возвращающая слово из реальной строки 25.