Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 19, 2015 22:33:37

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

Не могу понять как сделать это задачу?

Извините, ну я просто не могу понять как сделать это задачу?
Входные данные: строка, которая состоит из открывающих и закрывающих круглых дужек, - аргумент командной строки. Для передачи в качестве строки последовательность берется в двойные кавычки.
Результат работы: строка “YES”, если входная строка содержит правильную дужкову последовательность; или строка “NO”, если последовательность является неправильной. Дужкова последовательность считается правильной, если все дужки можно разбить попарно “видкриваюча”-“закриваюча”, при чем в каждой паре закрывающая дужка следует после открывающей.
Например
Входные данные: “)(” Результат: NO Входные данные: “(()(()” Результат: NO Входные данные: “(()(()()))” Результат: YES Входные данные: “())()(()())(()” Результат: NO
P.S. Если можно код, с обьяснениями, спасибо.

Офлайн

#2 Фев. 19, 2015 22:54:09

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

Не могу понять как сделать это задачу?

import sys
a = sys.argv[1]
while a.find('()') + 1:
    a = a.replace('()', '')
print 'NO' if a else 'YES'



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

Отредактировано terabayt (Фев. 19, 2015 22:55:28)

Офлайн

#3 Фев. 19, 2015 23:20:38

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

Не могу понять как сделать это задачу?

Большое спасибо, читаю про

a.find
та
a.replace

Офлайн

#4 Фев. 20, 2015 01:13:07

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

Не могу понять как сделать это задачу?

>>> def f(seq, se='()'):
...     st = []
...     s, e = se
...     for i in seq:
...         if i == s:
...             st.append(i)
...         elif i == e:
...             if st:
...                 st.pop()
...             else:
...                 return False
...     return st == []
... 
>>> f(')(')
False
>>> f('(()(()')
False
>>> f('(()(()()))')
True
>>> f('())()(()())(()')
False
>>>
>>> f('a(b(c)d(e(f)g(h)i)j)k')
True
>>> f('a(b)c)d(e)f(g(h)i(j)k)l(m(n)o')
False
>>>



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

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version