Форум » Обработка символьных строк » №4924 ошибка в программе » Ответить

№4924 ошибка в программе

Avis: Задание: Текстовый файл 24-197.txt содержит строку из заглавных латинских букв X, Y и Z, всего не более чем из 106 символов. Определите максимальное количество идущих подряд троек символов ZXY или ZYX. Код: [quote]f=open('24-197.txt') s=f.readline() k,kmax=1,1 for i in range(len(s)-2): if (f[i]=='Z' and f[i+1]=='X' and f[i+2]=='Y') or (f[i]=='Z' and f[i+1]=='Y' and f[i+2]=='X'): k+=1 kmax=max(kmax,k) else: k=1 print(kmax)[/quote] Ошибка: [quote]Traceback (most recent call last): File "C:/Users/Stas/Downloads/SS.py", line 5, in <module> if (f[i]=='Z' and f[i+1]=='X' and f[i+2]=='Y') or (f[i]=='Z' and f[i+1]=='Y' and f[i+2]=='X'): TypeError: '_io.TextIOWrapper' object is not subscriptable[/quote]

Ответов - 3

Поляков: f - это не массив и не строка.

MrAndrewson: Вы же в переменную s считали строку. Зачем по f пытаетесь индексы брать?

flo23: Я решала так, правда с подсказкой Алексея Кабанова (он помог найти мою ошибку) f=open('24-197.txt') s=f.readline() k=0 mk=0 i=0 while i<(len(s)-2): if ((s+s[i+1]+s[i+2])== 'ZYX' or (s+s[i+1]+s[i+2])== 'ZXY'): k+=1 i=i+3 if k>mk: mk=k else: k=0 i+=1 print(mk)




полная версия страницы