Форум сайта python.su
Alex_KutsanЭто грустно.
Если чесно я ещё немного не понял эту фразу
Alex_KutsanЭто очень мало, поверьте.
да и вобще я уже 3 раза менял архитектуру и всё заново переписывал
Офлайн
?
n= "(((!x)>x)_((!y)=(!x)))"
ch=["x","y"]
tf = False
def func(n,ch,tf):
for simv in n:
for oprt in opr:
if simv==oprt:
tf=True
if tf==False:
return "NO"
tf = False
for simv in n:
if simv == "(":
tf = True
if tf==False:
return "NO"
brackets = 0
for letter in n:
if letter == '(':
brackets += 1
elif letter == ')':
brackets -= 1
if brackets != 0:
return "NO"
for simv in n:
for chya in ch:
if simv == chya:
t=0
while t<len(n):
if n[t]==simv:
q=t
break
t=t+1
if n[q+1]== "(" or n[q+1]=="&":
tf = False
if n[q-1]==")":
tf = False
if tf = False:
return "NO"
print func(n,ch,tf)
raw_input()
Офлайн
http://ru.wikibooks.org/wiki/Учебник_Python_2.6 - должно помочь.
Я предлагаю привести код к виду, при котором вы сможете делать так:
if func1():
if func2():
if func3():
print "YES"
else:
print "NO"
else:
print "NO"
else:
print "NO"
Отредактировано (Март 26, 2010 22:41:44)
Офлайн
Внезапно осенило!
Можно так:
if func1() and func2() and func3():
print "YES"
else:
print "NO"
Офлайн
вы знаете, гениальная идея на щёт sys.exit() спасибо большое, осталось только очень много писанины, может до утра справлюсь без новых пролблем, вроде знаю уже как делать Спасибо ещё раз.
Офлайн
Ах да ещё 1 маленький нюанс, как составить функцию, которая поймёт что все открывшиеся скобки закрылись, и что все закрывшиеся скобки открывались,
Ну как в питоне когда выражеие со скобками пишеш, ведь при неправильной растановке скобок он ошибку выдаст,
даже если количество открывшихся количеству закрывшихся
хотяб такой пример (Y)))>X>(((Y)
Офлайн
>вы знаете, гениальная идея на щёт sys.exit() спасибо большое
sys.exit() не обязательно, можно просто exit()
Офлайн
Alex_Kutsanесли ( : х +=1
даже если количество открывшихся количеству закрывшихся
хотяб такой пример (Y)))>X>(((Y)
Офлайн
>>даже если количество
>>открывшихся количеству
>>закрывшихся
>>хотяб такой пример (Y)))>X>(((Y)
У вас ведь уже есть такой кусок в коде. Просто оформите его в виде функции. Вы ведь знаете как писать функции на питоне?
Офлайн
Я немного не правильно выразился,
Мой кусок подшитывает колво открывшихся и колво закр.
И в такой примерер (Y)))>X>(((Y) совершенно спокойно его пропустит.
А должен выдать ошибку. Моя программа по сути должна проверять правильность синтаксиса функции. Просто вмето привычных * и +, там есть >,<,_,=,&( обозначаются они конечно по другому, но на клавиатуре нет таких значков)
Так вот если мы посмотрим на эту функцию( только вместо < представьте * ) ТОувидим что она записана с неправильной растановкой скобок.
хотя кол-во открывающихся = кол=ву закрывающихся.
и такой цикл
for simv in n:
if simv == "(":
tf = True
if tf==False:
print "NO"
Офлайн