Здравствуйте. Как мне сделать, так чтобы определялось самое внутренней вхождение скобки. т.е допустим ввожу формулу (Av(B+C)vB), и чтобы сравнивалась скобка (B+C) с моим образом.
S = str(input("Введите формулу"))
f = 0
for i in range(len(S)):
a=str.find("(",f);
Забыл указать, после сравнения у меня получается, если это формула, то она заменяется определённой буквой, а после опять выполняется цикл, теперь уже со вторыми скобками т.е было (Av(B+C)vB), стало допустим (AvRvB) и уже сравнить данную скобку
Ну, в задании написано проверка скобочного итога формулы. С самого внутреннего вхождения скобки, произвести проверку, является ли выражение формулой, если результат положительный провести замену на переменную. Продолжать пока не останется одна переменная
Нет, на любую переменную, т.е даёт форумал (A^(B/C)^B) находим самую внутреннюю скобку и проверяем является она формулой или нет (B/C) допустим является, и это формула заменяется на любую переменную, абсолютно любую, допустим R, у нас остаётся (A^R^B) теперь опять проводим тоже цикл с этой скобкой, является ли она формулой, допустим опят таки является, значит заменяем на R и всё в ответе у нас получится R, скобок может быть сколько угодно, нужно начинать с самой внутренний и двигаться можно сказать назад.И вот как раз не пойму как мне начинать работу как раз стаки с самой внутренней скобки, как то надо это через цикл
Не знаю можно ли тут сделать как-то более красиво со стеком и т.п., но наверно можно например проходить строку в цикле (каждый символ) и искать такую открывающую скобку, после которой следующая скобка закрывающая.
Однозначно строку посимвольно перебирать в цикле, и производить поиск по шаблону или скобки считать и отделять подстроку до первого закрывающего смайлика )
Поднимаю тему. Я написал вот такой код, кр у меня он работает, но это делает один раз т.е я ввожу допустим (Av(B^C)vB) он меняет на (AvRvB) и всё, типа он должен теперь данную скобку проверить и поменять её на R. Я пытался засунуть туда While, но у меня либо зацикливание, либо вообще он не работает. Помогите пожалуйста допилить).
def test(S):
for i in range(len(S)):
if S[i] == '^' or S[i] == "+" or S[i] == "/" or S[i] == "|" or S[i] == 'v':
return True
S = str(input("Введите строку"))
flag = True
for i in range(len(S)):
if S[i] == '(':
a = i
flag = False
print("Позиция левой скобки = ", i)
elif S[i] == ')':
print("Позиция правой скобки =", i)
flag = False
b = i
news = S[a+1:b]
print("Фрагмент = ", news)
if test(news):
S = S[:a] + 'R' + S[b+1:]
print("Фрагмент после удаления = ", S)
else:
print("Данный фрагмент не является формулой");
break;