TransWikia.com

Не могу определить самое длинное слово в файле, python

Stack Overflow на русском Asked on February 24, 2021

Дана следующая задача: "Текстовый файл состоит не более чем из 10^6 символов и содержит только заглавные латинские буквы и десятичные цифры. Определите самое длинное слово. Словом считается любая произвольная последовательность букв." Пробелов в файле нет, только цифры и буквы.

Я составила следующий код:

s = open('24.txt').read()
data = []
maxdata = []
for char in s:
    if char in '0123456789':
        data.clear()
    else:
        data.append(char)
        if len(data) > len(maxdata):
            maxdata.clear()
            maxdata = data
print(*maxdata)

Но он ничего не печатает. 🙁
Можете написать, в чём проблема?

One Answer

Вот здесь вы присваиваете переменной maxdata ссылку, которая содержится в переменной data. В результате чего у вас обе эти переменные начинают указывать на один и тот же список:

maxdata = data

Поэтому, когда вы дальше по ходу действия программы очищаете список, на который указывает переменная data:

data.clear()

Вы таким образом очищаете тот же самый список, на который указывает и maxdata и у вас этот список становится пустым. Чтобы такого не происходило, вам нужно присвоить maxdata ссылку на копию списка, на который указывает переменная data. Сделать это можно одним из следующих способов:

  • maxdata = data.copy()
  • maxdata = data[:]
  • maxdata = list(data)

Но ещё лучше вместо data.clear() использовать data = [], чтобы каждую итерацию цикла переменная data у вас указывала на новый список (обычно именно так и делают в питоне).

Correct answer by CrazyElf on February 24, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP