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

Страница 818 из 1885
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
eval(expression) может и прокатит, но это метод для слабых %)
Я предлагаю написать свой парсер как у питона!

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
или ты к тому что можно было проще сделать?

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: return True except SyntaxError: return False
>>> try: ... compile('(a+b', '', 'exec') ... except SyntaxError: ... print('failed') ... failed >>>

но вы продолжайте клепать регэкспы, да

в итоге чтото типа 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
Призови тыжпрограммиста

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() чтобы пробелы убрать

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

Johnnie
23.11.2016
06:48:50
? я ждал

а если вдруг пробелов не будет?

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

Dmitry
23.11.2016
06:51:25
а если вдруг пробелов не будет?
а если в строке будет 04-Плащ-палатка? )

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

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

arisu
23.11.2016
07:03:54
а если в строке будет 04-Плащ-палатка? )
А если так будет, то значит автор напиздел с форматом входных данных

За что и поплатился

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

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