Форум » Обработка символьных строк » задача 24 номер 228 » Ответить

задача 24 номер 228

yana: что не так [pre2] s=open('24-228.txt').readline() Max=0 for i in range(len(s)): if s=='S' and s[i+1]=='1' and s[i+2]=='2' \ and s[i+7]=='7' and s[i+8]=='7' and s[i+11]=='9'\ and s[i+12]=='S': l=int(s[i+1]+s[i+2]+s[i+3]+s[i+4]+s[i+5]\ +s[i+6]+s[i+7]+s[i+8]+s[i+9]+s[i+10]+s[i+11]) if l>Max: Max=l print(Max) [/pre2]

Ответов - 2

Ж: [pre2] как минимум, вместо if s=='S' напишите if s [ i ] =='S' [/pre2]

mdziova: А где Вы проверяете, что между SS у Вас не оказалось букв? Вам предложить свое решение. Разбиваю строку по SS (split), затем перебираю все подстроки, которые получились (это все подстроки, которые находятся между SS, ограниченные парой этих символов с двух сторон), затеем просто проверяю их на последовательность, состоящую только из цифр (a.isdigit()), и соответствие маске (fnmatch), ну а далее просто проверяю (int) на максимум. Затем нахожу сумму и нужное произведение цифр... [pre2] #егэ 24(228) from fnmatch import* f=open('24-228.txt') s=f.readline() s=s.split('SS') mx=0 for a in s: if a.isdigit(): if fnmatch (a,'12????77??9'): mx=max(mx,int(a)) x=mx sx=0 px=1 while x>0: d=x%10 if d%2!=0: sx+=d else: px*=d x//=10 print (sx+px) [/pre2]



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