Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 15, 2015 23:19:44

Rorchax
Зарегистрирован: 2015-02-15
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

еще одна задача, только не понимаю как записать

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

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

цикл for i in str
if i==´0'
kol+=1
Посчитать последовательность
дальше считаем другие последовательности
и если они больше максимальной
записываем их в переменную
и к выходу из цикла у нас будет максимальная последовательность 0

Офлайн

#2 Фев. 16, 2015 12:26:53

TroSer
От: Харьков
Зарегистрирован: 2013-11-13
Сообщения: 65
Репутация: +  3  -
Профиль   Отправить e-mail  

еще одна задача, только не понимаю как записать

import itertools
print max(len(list(group)) for key, group in itertools.groupby(sequence) if key == 0)

Отредактировано TroSer (Фев. 16, 2015 12:27:12)

Офлайн

#3 Фев. 16, 2015 13:50:07

ajib6ept
От: От: От: От: От: От: От: От:
Зарегистрирован: 2013-08-04
Сообщения: 297
Репутация: +  26  -
Профиль   Отправить e-mail  

еще одна задача, только не понимаю как записать

Правильно я понял, на вход список цифр, на выходе максимальное количество подряд идущих нулей?

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)



_________________________
Python golden rule: Do not PEP 8 unto others; only PEP 8 thy self.
Don't let PEP 8 make you insanely intolerant of other people's code.

Отредактировано ajib6ept (Фев. 16, 2015 13:52:36)

Офлайн

#4 Фев. 17, 2015 01:09:38

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9890
Репутация: +  854  -
Профиль   Отправить e-mail  

еще одна задача, только не понимаю как записать

#!/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]$



Отредактировано py.user.next (Фев. 17, 2015 01:11:58)

Офлайн

#5 Фев. 17, 2015 01:16:38

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

еще одна задача, только не понимаю как записать

py.user.next
немного ускорим )

    if t > n:
        return t
    return n



————————————————
-*- Simple is better than complex -*-

Офлайн

#6 Фев. 17, 2015 01:45:39

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9890
Репутация: +  854  -
Профиль   Отправить e-mail  

еще одна задача, только не понимаю как записать

terabayt
немного ускорим )
Лучше один выход оставить. В данном случае это не особо видно, но в общем случае return'ы, разбросанные по функции, - это плохой стиль. При составлении блок-схемы это заметно. ;)



Отредактировано py.user.next (Фев. 17, 2015 01:46:00)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version