
Темный
03.07.2016
17:54:22
который наглядно объясняется, ну

Zart
03.07.2016
17:54:34
масло масляное
не вижу ни одной причины чтобы иллюстрации в книжке были менее наглядными
тем более если речь об алгоритме

Google

Zart
03.07.2016
17:55:31
но спор бессмысленный. если тебе удобнее учить именно так - никто ж не запрещает

Темный
03.07.2016
18:01:58
имеем задачу на степике - Кодирование осуществляется следующим образом:
s = 'aaaabbсaa' преобразуется в 'a4b2с1a2'
s = input()
count = 1
out = ""
i = 0
while i < len(s) - 1:
if s[i] == s[i + 1]:
count += 1
else:
out = out + s[i] + str(count)
count = 1
i += 1
print(out)
работает, но!

Марк
03.07.2016
18:02:43
в код оформляй только

Темный
03.07.2016
18:02:55
пастебин?

Zart
03.07.2016
18:03:08
не, тут

Марк
03.07.2016
18:03:17
s = input()
count = 1
out = ""
i = 0
while i < len(s) - 1:
if s[i] == s[i + 1]:
count += 1
else:
out = out + s[i] + str(count)
count = 1
i += 1
print(out)
Вот так

Темный
03.07.2016
18:03:42
научите?

Марк
03.07.2016
18:04:05
три кавычки над ё и закрываешь ими
`

Google

Марк
03.07.2016
18:04:40
Вот такие

Темный
03.07.2016
18:05:03
понял, спасибо
имеем задачу на степике - Кодирование осуществляется следующим образом:
s = 'aaaabbсaa' преобразуется в 'a4b2с1a2'
s = input()
count = 1
out = ""
i = 0
while i < len(s) - 1:
if s[i] == s[i + 1]:
count += 1
else:
out = out + s[i] + str(count)
count = 1
i += 1
print(out)
например входные даные это - aaaabbcaa

Zart
03.07.2016
18:06:05
>>> s = 'aaaabbсaa'
>>> out = ''
>>> while s:
... c, s = s[0], s[1:]
... n = len(s)
... s = s.lstrip(c)
... out += c + str(1 + n - len(s))
...
>>> print(out)
a4b2с1a2

Темный
03.07.2016
18:06:10
последние ..aa не обрабатывает

Zart
03.07.2016
18:07:30
не обрабатывает потому что ты в out не дописываешь ничего, а только считаешь повторы на тот момент
т.е. хвост просрат
надо строку out= вынести из if но так чтобы не повторялось на каждой итерации

Темный
03.07.2016
18:09:13

Zart
03.07.2016
18:09:23
разве?

Темный
03.07.2016
18:10:22
ага, должно быть в пределах знаний, что привел чуть выше. Понял, сейчас попробую

Zart
03.07.2016
18:11:09
>>> s = 'aaaabbсaa'
>>> out = ''
>>> while s:
... char, s, count = s[0], s[1:], 1
... while s and s[0] == char:
... s = s[1:]
... count += 1
... out += char + str(count)
...
>>> print(out)
a4b2с1a2
гно вопрос

Темный
03.07.2016
18:15:40
гно вопрос
у тебя как-то сложна(
заменил у себя последнюю строчку
print(out + s[i] + str(count))

Zart
03.07.2016
18:16:12
я просто рассматриваю строку как очередь, и выдергиваю из неё первый элемент
после этого сканирую очередь на предмет совпадения с этим элементом и подсчитываю колво, после чего в вывод идёт символ и счетчик
и так пока "входная очередь" не опустеет

Ihar
03.07.2016
18:29:39
s = input()
word = []
for i in s:
if i in word:
continue
word.append(i)
word.append(s.count(i))
print(''.join([str(i) for i in word]))

Google

Zart
03.07.2016
18:30:42
условие if i in word неверно
но s.count(i) отличный ход
а если ты будешь делать str при аппенде, то не придётся рисовать компрехеншен с str(i)

Ihar
03.07.2016
18:32:40
дернуло чего-то к компрехеншну

Zart
03.07.2016
18:32:49
ну и результат явно неправильный, так как ты на каждом символе входной строки будешь добавлять

Ihar
03.07.2016
18:33:18
континью ж
он пропустит повторяющийся символ

Zart
03.07.2016
18:33:37
так в том-то и дело, что ты неправильно вообще задачу решаешь
он будет пропускать и новые символы же

Ihar
03.07.2016
18:34:19
я понял, там про повторяющиеся. не прав

Zart
03.07.2016
18:34:25
aaaabbbaaabbb - когда дойдет до второй последовательности a, начнет пропускать её сразу нафиг следом за b
вообще эта задача - написать RLE компрессор по факту

Zart
03.07.2016
18:35:02
который в частности применялся в .bmp файлах

Dima
03.07.2016
18:38:22
from functools import reduce
def group_chars(buffer, char):
if buffer:
last_value = buffer[-1]
if last_value == char:
buffer += (2,)
elif isinstance(last_value, int):
if buffer[-2] == char:
buffer = (buffer[:-1] + (last_value + 1,))
else:
buffer += (char,)
else:
buffer += (1, char)
else:
return (char, 1)
return buffer
string = input()
result = "".join([str(c) for c in reduce(group_chars, string, ())])
print(result)

Zart
03.07.2016
18:39:59
не понял, почему с конца
это какая-то феерическая хрень

Темный
03.07.2016
18:42:27

Zart
03.07.2016
18:43:22
а, дошло что он там вытворяет..
но хреновая обработка граничных условий...
почему вы все пишете ''.join([...list comprehension...]) ?

Google

Sergey
03.07.2016
18:45:37
Чтобы больше памяти сожрать

Zart
03.07.2016
18:45:46
выкидывайте нахер квадратные скобки и будет кошерный ''.join(...generator expression...)

Ihar
03.07.2016
19:33:16
s = input()
word = ''
count = 1
for i in range(len(s) - 1):
if s[i] == s[i+1]:
count += 1
if i+1 != len(s) - 1:
continue
word += s[i] + str(count)
count = 1
print(word)

Zart
03.07.2016
19:35:02
дык оно работать не будет

Ihar
03.07.2016
19:35:18
у меня работает

Admin
ERROR: S client not available

Zart
03.07.2016
19:36:02
а, иф с континуе же

Ihar
03.07.2016
19:36:13
ага

Zart
03.07.2016
19:36:30
в целом довольно костыльненько

Ihar
03.07.2016
19:36:47
да, как то все равно не питоничноъ

Zart
03.07.2016
19:37:01
>>> s = 'aaaabbсa'
>>> word = ''
>>> count = 1
>>> for i in range(len(s) - 1):
... if s[i] == s[i+1]:
... count += 1
... if i+1 != len(s) - 1:
... continue
... word += s[i] + str(count)
... count = 1
...
>>> print(word)
a4b2с1
финальный a1 проёбан

Ihar
03.07.2016
19:37:31
ага

Zart
03.07.2016
19:37:46
потому что итерация до -1 изза проверки текущее и текущее+1
надо добивать для s[-1]

Aleksey
03.07.2016
19:38:27
Есть такой календарик, когда меняется дата, нужно перенаправить по определенному роуту с новыми значениями.
Роут уже есть. r'^index/(?P<day>\d{2})/(?P<month>\d{2})/(?P<year>\d{4})/(?P<category>\w+)/ .....
Нужно только сгенерировать другие данные для этого роута и перенаправить document.location ....
Кто нибудь сталкивался?

Ihar
03.07.2016
19:38:38
а s[i] может быть и так равен s[-1]

Google

Zart
03.07.2016
19:44:17

Ihar
03.07.2016
19:53:20
s = input()
word = ''
count = 1
for i in range(len(s)):
if s.find(s[i], i+1) != i+1:
word += s[i] + str(count)
count = 1
continue
count += 1
print(word)

Zart
03.07.2016
19:54:17
аминь. но корявоооо

Ihar
03.07.2016
19:56:06
функцией с рекурсией мб какой?

Zart
03.07.2016
19:58:32
>>> s = 'aaaabbсaa'
>>> out = ''
>>> while s:
... c, s = s[0], s[1:]
... out += c + str(1 + s.count(c))
... s = s.lstrip(c)
...
>>> print(out)
a6b2с1a2
>>>

Ihar
03.07.2016
20:00:56
ну он же каунтит во всей строке, а не до первого вхождения другого символа

Zart
03.07.2016
20:01:36
хм.. абыдна да

osarjew
03.07.2016
20:02:21
ПиЧарм. File - settings - project interpretator загрузил пакет bs4 . Но import bs4 подсвечивается красным. Что делать?

Zart
03.07.2016
20:02:49
загрузил не пакет, а дистрибушен
и имя пакаджа в нем не обязано совпадать с именем дистра

osarjew
03.07.2016
20:03:34
Ой

Zart
03.07.2016
20:03:37
https://pypi.python.org/pypi/bs4 гм. зачем эту заглушку вообще ставить

Janek
03.07.2016
20:20:49
Пацаны. Фласк или джанго?

Zart
03.07.2016
20:21:12
пирамида

Janek
03.07.2016
20:22:00
Окей
Эта группа больше не существует