Я создаю программу, которая разделяет круглые скобки для «отдельных пар». Например, ()()
превращается в |()|()|
, но (())
остается неизменным, оставаясь |(())|
. Он продолжает «получать» одного и того же персонажа. Я попытался изменить , где я вставляю, например pos - 1
, но он все еще не работает. Вот мой код:For-loop возвращает тот же символ при разборе
def insert(source_str, insert_str, pos):
return source_str[:pos]+insert_str+source_str[pos:]
x = 0
rightSideOfEquation = "()bx((x))c(y(c+1)(x)y)"
for pos in range(len(rightSideOfEquation)):
if x == 0:
rightSideOfEquation = insert(rightSideOfEquation,'|',pos)
if rightSideOfEquation[pos] == '(':
x += 1
if rightSideOfEquation[pos] == ')':
x -= 1
print(rightSideOfEquation)
Он печатает |||||||||||||||||||||||()bx((x))c(y(c+1)(x)y)
Я хочу, чтобы напечатать |()|bx|((x))|c|(y(c+1)(x)y)|
ПРИМЕЧАНИЕ: Вы можете увидеть здесь: ** https://math.stackexchange.com/questions/1682322/recursive-parsing-parenthesis-with-explanation
** Я попытался изменить его до pos + 1
и pos -1
с небольшим эффектом, кроме того, где он повторяется.
если это рекурсивный синтаксический, где ваша рекурсия? – MSeifert
x никогда не перестает быть 0 – JETM
Ну, я не знаю, как это объяснить, плохо скажите, что вы можете читать больше здесь :) – XXXX