@python_beginnersЭта группа больше не существует

Страница 110 из 1885
Темный
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
а s[i] может быть и так равен s[-1]
как видно выше когда у тебя заканчивается на 'aa' - он правильно завершает с a2. но для случая неравных - проглатывает хвост

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
Окей

Страница 110 из 1885

Эта группа больше не существует Эта группа больше не существует