
Igor
22.11.2016
23:33:35
Тебе надо смотреть конкретные скобки в строке, считать их открытие и закрытие.
По крайней мере, так решается алгоритмически эта задача.

Max
22.11.2016
23:33:54
т.е. синтак еррор по определению не подходит?

Igor
22.11.2016
23:33:58
eval(expression) может и прокатит, но это метод для слабых %)

Google

Igor
22.11.2016
23:34:05
подходит, в теории, если ты заюзаешь eval

Denis
22.11.2016
23:34:17
Не, не прокатит, второй тест false будет

Igor
22.11.2016
23:34:23
но это самый худший (и абсолютно небезопасный) способ сделать такую функцию

Max
22.11.2016
23:34:40
бля

Stanislav
22.11.2016
23:34:42

Max
22.11.2016
23:34:43
понял
это ведь реально стринг, а не инт
понел

Denis
22.11.2016
23:35:21
Если лень стек делать, можно заменять (), [], {} на пустые строки, пока заменяется

Igor
22.11.2016
23:35:34
давай объясню, почему.
пример - ты потом напишешь телеграм бота, который будет от пользователя принимать строку (выражение как раз типа "((5+3)*2+1)")
и в ответ отдавать например то же True, "Simple"
если ты сделаешь eval(expression) при получении сообщения, может он и будет ругаться на ошибки в синтаксисе, но не только на скобки, а на все!
прикинь пользователь введут x =/= 1
там нет скобок, а syntax error есть. к тому же в задании хотят от тебя получить тип скобок, их формат
а потом прикинь что боту отправляют сообщение import os; os.rmdir('/')
а ты был ленив и неопытен, и запустил телеграм бота на сервере под root'ом
в итоге пользователь стер нахуй всю систему у тебя
просто потому что ты слепо обработал eval'ом его сообщение. грубо говоря, запустил его код. у себя.

Dk
22.11.2016
23:38:52
Засмеялся на всю кухню на этом моменте

Google

Igor
22.11.2016
23:38:53
тебе надо читать строку по одному символу и смотреть, какие скобки открываются, какие закрываются..
как - подумай сам

Max
22.11.2016
23:39:13
да я уже понял как :)
просто не понял что это концептуально стринг и немного иначе надо обработать
спасибо

Igor
22.11.2016
23:39:56
да тут не "немного иначе".. но ладно

Dk
22.11.2016
23:40:13
У меня изначально в голове возникла идея удаления парных скобок
Если скобки проверять

Max
22.11.2016
23:41:19
ну я тут осилил раздел о регулярных выражениях
и есть идея как извратиться
но сделаем через циклы

Anton
22.11.2016
23:41:34
а если так ({)}?

Igor
22.11.2016
23:41:49
все равно там на checkio такой тест есть

Anton
22.11.2016
23:42:08
и правильно, лень двигатель прогресса

Max
22.11.2016
23:42:57
я совершил главную ошибку даже раньше
хотел досмотреть фильм, ради интереса зашел в новый сет задач. Увидел вроде простую и подумал что решу через трай ексепт быстренько. В итоге уже 20 мин вникаю и разные моменты смотрю
import re
def checkio(expression):
pattern = '({}|\[\]|\(\))'
matcher = re.compile(pattern)
brackets = ''.join(x for x in expression if x in '{}[]()')
while True:
m = matcher.search(brackets)
if not m: break
brackets = brackets.replace(m.group(), '')
return False if brackets else True
вот это охуенное
жаль не мое
у меня так вышло: https://i.gyazo.com/ec283252c135d55e8fddff1b60efb75f.png

Google

Max
23.11.2016
00:06:23
40 минут на ерунду ушло =/

Dk
23.11.2016
00:09:48
И всё-таки, ({)} это проверит?
Не совсем понял

Max
23.11.2016
00:15:41
да!
точнее немного иначе, но да

b0g3r
23.11.2016
00:18:50
А вот там такая интересная конструкция
Первый count_pack.append()
Это там так i хитро написано?)

Max
23.11.2016
00:20:18
в конце i, да

b0g3r
23.11.2016
00:20:25
Нене
Разве вот то что внутри append()
Не равно i?)

Max
23.11.2016
00:24:31
это мы отправляем открытую скобку в каунт_пак

b0g3r
23.11.2016
00:25:50
Я понимаю)

Max
23.11.2016
00:26:08
или ты к тому что можно было проще сделать?

Anton
23.11.2016
00:26:23
да, аппенд(и)
запахло перлом

Dk
23.11.2016
00:35:39
Везде, где скобки, пахнет перлом?
Я более-менее представил как это работает.

Google

Max
23.11.2016
00:37:06
вот этим и хорошо программирование. Ты можешь решить любую проблему через жопу десятком разных способов

Dk
23.11.2016
00:38:22
А вот это уже девиз перла?

Max
23.11.2016
00:39:34
ну я это и на пайтоне практикую! т.к. порог входа еще ниже

Anton
23.11.2016
00:47:27
я про хитрость и неочевидность решения

Zart
23.11.2016
02:25:08
но вы продолжайте клепать регэкспы, да
в итоге чтото типа
def checkio(expression):
try:
compile(expression, '', 'exec')
except SyntaxError:
return False
return True

Pavel
23.11.2016
02:30:06

Admin
ERROR: S client not available

Zart
23.11.2016
02:30:56
смотря насколько широко интерпретировать условия задачи

Pavel
23.11.2016
02:32:38
Ну там вроде однозначно сказано про баланс скобок, а не общую корректность.

Zart
23.11.2016
02:34:01
ну тогда или читерить перебором символов и подсчетом скобок
или делать честный парсер/лексер...
мало ли, может там надо корректно обработать ('a))' + '((b')

Roman
23.11.2016
06:13:25
Ребят, есть такие записи 01 - Декларация и т.д. Они хранятся в txt. Как сделать, чтобы 01 записывалось в бд в таблицу code, a декларация в таблицу name?
Ну или можете сказать, что почитать на эту тему

arisu
23.11.2016
06:14:43
Призови тыжпрограммиста

Dmitry
23.11.2016
06:17:33

Roman
23.11.2016
06:18:34

Johnnie
23.11.2016
06:19:29
регулярка или .split()
Language: python3
Source: s = '01 - Декларация'
print(s.split('-'))
Result: ['01 ', ' Декларация']
Stats: Absolute running time: 0.14 sec, cpu time: 0.02 sec, memory peak: 5 Mb, absolute service time: 0,14 sec

Dmitry
23.11.2016
06:20:21
если у тебя строго есть только один " - " в строке - .split() иедально

Google

Johnnie
23.11.2016
06:20:49
еще .strip() чтобы пробелы убрать

Roman
23.11.2016
06:21:43

Dmitry
23.11.2016
06:22:20
тогда способ @ape364 сделает все без лишних трудозатрат на регулярки
только читай построчно

Roman
23.11.2016
06:24:35

Johnnie
23.11.2016
06:25:48
with ...
s = '01 - Декларация'
parsed = [x.strip() for x in s.split('-')]
print(parsed)

Roman
23.11.2016
06:26:11
ладно, сейчас почитаю

Johnnie
23.11.2016
06:26:18
['01', 'Декларация'] даст в результате

Dmitry
23.11.2016
06:31:27
циклом да?
да, открываешь, читаешь
https://docs.python.org/3/tutorial/inputoutput.html#methods-of-file-objects

Zart
23.11.2016
06:48:35

Johnnie
23.11.2016
06:48:50
? я ждал
а если вдруг пробелов не будет?

[Anonymous]
23.11.2016
06:50:16
'-'

Dmitry
23.11.2016
06:51:25

Johnnie
23.11.2016
06:51:41
хуевый разделитель, чо :)

Zart
23.11.2016
06:53:09
сплиту можно ограничить колво разделов в 1:
>>> '01-плащ-палатка'.split('-')
['01', 'плащ', 'палатка']
>>> '01-плащ-палатка'.split('-', 1)
['01', 'плащ-палатка']

Dmitry
23.11.2016
06:54:16

arisu
23.11.2016
07:03:54
За что и поплатился

Roman
23.11.2016
07:05:06
Эта группа больше не существует