Найти - Пользователи
Полная версия: еще одна задача, только не понимаю как записать
Начало » Центр помощи » еще одна задача, только не понимаю как записать
1
Rorchax
Программа. Дана последовательность из 100 целых чисел, возможно наличие
повторяющихся. Определить количество чисел в наиболее длинной
последовательности из подряд идущих нулей (в серии нулей).

Вот только помогите записать это все кодом

цикл for i in str
if i==´0'
kol+=1
Посчитать последовательность
дальше считаем другие последовательности
и если они больше максимальной
записываем их в переменную
и к выходу из цикла у нас будет максимальная последовательность 0
TroSer
import itertools
print max(len(list(group)) for key, group in itertools.groupby(sequence) if key == 0)
ajib6ept
Правильно я понял, на вход список цифр, на выходе максимальное количество подряд идущих нулей?

out = [0]
mylist = [1, 2, 3, 4, 5, 0, 0, 0, 4, 0, 4, 0, 0]
while mylist:
    if mylist.pop() == 0:
        n = 1
        while mylist.pop() == 0:
            n += 1
        out.append(n)
print max(out)
py.user.next
#!/usr/bin/env python3
 
# Находит максимальную длину подпоследовательности из нулей
 
def maxsl(seq, val):
    n = t = 0
    for i in seq:
        if i == val:
            t += 1
        else:
            if t > n:
                n = t
            t = 0
    if t > n:
        n = t
    return n
 
def main():
    lst = [1, 2, 3, 4, 5, 0, 0, 0, 4, 0, 4, 0, 0]
    print(maxsl(lst, 0))
 
if __name__ == '__main__':
    main()

maxseq.doct
>>> from maxseq import maxsl as f

>>> f([], 0)
0
>>> f([1], 0)
0
>>> f([1, 1], 0)
0
>>> f([0], 0)
1
>>> f([0, 0], 0)
2
>>> f([0, 0, 0], 0)
3
>>> f([0, 1], 0)
1
>>> f([1, 0], 0)
1
>>> f([0, 0, 1], 0)
2
>>> f([1, 0, 0], 0)
2

>>> f([0, 1, 0], 0)
1
>>> f([0, 1, 1, 0], 0)
1
>>> f([0, 0, 1, 1, 0], 0)
2
>>> f([0, 1, 1, 0, 0], 0)
2

>>> f([0, 1, 0, 1], 0)
1
>>> f([0, 1, 0, 0, 1], 0)
2
>>> f([0, 0, 1, 0, 1], 0)
2
>>> f([0, 0, 1, 0, 1, 0, 0, 0], 0)
3
>>> f([0, 0, 1, 0, 0, 0, 1, 0, 0], 0)
3
>>> f([0, 0, 0, 1, 0, 0, 1, 0, 0], 0)
3

>>> f([0, 0, 1], 1)
1

[guest@localhost py]$ python3 -mdoctest maxseq.doct -v
Trying:
from maxseq import maxsl as f
Expecting nothing
ok
Trying:
f([], 0)
Expecting:
0
ok
Trying:
f([1], 0)
Expecting:
0
ok
Trying:
f([1, 1], 0)
Expecting:
0
ok
Trying:
f([0], 0)
Expecting:
1
ok
Trying:
f([0, 0], 0)
Expecting:
2
ok
Trying:
f([0, 0, 0], 0)
Expecting:
3
ok
Trying:
f([0, 1], 0)
Expecting:
1
ok
Trying:
f([1, 0], 0)
Expecting:
1
ok
Trying:
f([0, 0, 1], 0)
Expecting:
2
ok
Trying:
f([1, 0, 0], 0)
Expecting:
2
ok
Trying:
f([0, 1, 0], 0)
Expecting:
1
ok
Trying:
f([0, 1, 1, 0], 0)
Expecting:
1
ok
Trying:
f([0, 0, 1, 1, 0], 0)
Expecting:
2
ok
Trying:
f([0, 1, 1, 0, 0], 0)
Expecting:
2
ok
Trying:
f([0, 1, 0, 1], 0)
Expecting:
1
ok
Trying:
f([0, 1, 0, 0, 1], 0)
Expecting:
2
ok
Trying:
f([0, 0, 1, 0, 1], 0)
Expecting:
2
ok
Trying:
f([0, 0, 1, 0, 1, 0, 0, 0], 0)
Expecting:
3
ok
Trying:
f([0, 0, 1, 0, 0, 0, 1, 0, 0], 0)
Expecting:
3
ok
Trying:
f([0, 0, 0, 1, 0, 0, 1, 0, 0], 0)
Expecting:
3
ok
Trying:
f([0, 0, 1], 1)
Expecting:
1
ok
1 items passed all tests:
22 tests in maxseq.doct
22 tests in 1 items.
22 passed and 0 failed.
Test passed.
[guest@localhost py]$
terabayt
py.user.next
немного ускорим )
    if t > n:
        return t
    return n
py.user.next
terabayt
немного ускорим )
Лучше один выход оставить. В данном случае это не особо видно, но в общем случае return'ы, разбросанные по функции, - это плохой стиль. При составлении блок-схемы это заметно. ;)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB