Форум сайта python.su
0
Alex_KutsanЭто грустно.
Если чесно я ещё немного не понял эту фразу
Alex_KutsanЭто очень мало, поверьте.
да и вобще я уже 3 раза менял архитектуру и всё заново переписывал
Офлайн
18
?
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()
Офлайн
0
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)
Офлайн
0
Внезапно осенило!
Можно так:
if func1() and func2() and func3():
print "YES"
else:
print "NO"
Офлайн
0
вы знаете, гениальная идея на щёт sys.exit() спасибо большое, осталось только очень много писанины, может до утра справлюсь без новых пролблем, вроде знаю уже как делать Спасибо ещё раз.
Офлайн
0
Ах да ещё 1 маленький нюанс, как составить функцию, которая поймёт что все открывшиеся скобки закрылись, и что все закрывшиеся скобки открывались,
Ну как в питоне когда выражеие со скобками пишеш, ведь при неправильной растановке скобок он ошибку выдаст,
даже если количество открывшихся количеству закрывшихся
хотяб такой пример (Y)))>X>(((Y)
Офлайн
186
>вы знаете, гениальная идея на щёт sys.exit() спасибо большое
sys.exit() не обязательно, можно просто exit()
Офлайн
18
Alex_Kutsanесли ( : х +=1
даже если количество открывшихся количеству закрывшихся
хотяб такой пример (Y)))>X>(((Y)
Офлайн
0
>>даже если количество
>>открывшихся количеству
>>закрывшихся
>>хотяб такой пример (Y)))>X>(((Y)
У вас ведь уже есть такой кусок в коде. Просто оформите его в виде функции. Вы ведь знаете как писать функции на питоне?
Офлайн
0
Я немного не правильно выразился,
Мой кусок подшитывает колво открывшихся и колво закр.
И в такой примерер (Y)))>X>(((Y) совершенно спокойно его пропустит.
А должен выдать ошибку. Моя программа по сути должна проверять правильность синтаксиса функции. Просто вмето привычных * и +, там есть >,<,_,=,&( обозначаются они конечно по другому, но на клавиатуре нет таких значков)
Так вот если мы посмотрим на эту функцию( только вместо < представьте * ) ТОувидим что она записана с неправильной растановкой скобок.
хотя кол-во открывающихся = кол=ву закрывающихся.
и такой цикл
for simv in n:
if simv == "(":
tf = True
if tf==False:
print "NO"
Офлайн