Форум сайта python.su
Программа. Дана последовательность из 100 целых чисел, возможно наличие
повторяющихся. Определить количество чисел в наиболее длинной
последовательности из подряд идущих нулей (в серии нулей).
Вот только помогите записать это все кодом
цикл for i in str
if i==´0'
kol+=1
Посчитать последовательность
дальше считаем другие последовательности
и если они больше максимальной
записываем их в переменную
и к выходу из цикла у нас будет максимальная последовательность 0
Офлайн
import itertools print max(len(list(group)) for key, group in itertools.groupby(sequence) if key == 0)
Отредактировано TroSer (Фев. 16, 2015 12:27:12)
Офлайн
Правильно я понял, на вход список цифр, на выходе максимальное количество подряд идущих нулей?
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)
Отредактировано ajib6ept (Фев. 16, 2015 13:52:36)
Офлайн
#!/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()
>>> 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]$
Отредактировано py.user.next (Фев. 17, 2015 01:11:58)
Офлайн
py.user.next
немного ускорим )
if t > n: return t return n
Офлайн
terabaytЛучше один выход оставить. В данном случае это не особо видно, но в общем случае return'ы, разбросанные по функции, - это плохой стиль. При составлении блок-схемы это заметно. ;)
немного ускорим )
Отредактировано py.user.next (Фев. 17, 2015 01:46:00)
Офлайн