0
Python Balanced Parentheses Data Structures
Hi, everyone. I am playing with the code in this exercise but it does not work for every case scenario. My code is this: def balanced(expression): lst = [] for i in expression: if i == '(' or i == '{' or i == '[': lst.append(i) elif i == ')' or i == '}' or i == ']': lst.pop(0) if len(lst) == 0: return True else: return False print(balanced(input())) What could be my error? Thanks in advance!
6 Respostas
+ 6
Because there could be an input wherein there is a closing bracket but no opening bracket before it.
Example:
INPUT: )Hello(
And in first iteration, this will cause an error since the lst is still empty, i.e. no '(' or items to 'pop' .
So if there is ')' but no '(' was found like in this example ")Hello(", it is automatically unbalanced therefore return False.
TO SOLVE:
---> Check first if there are opening brackets in lst before removing a bracket.
---> If there is a ')' but no '(' before it, return False.
Additional:
The problem is just looking for brackets/parentheses, so you don't need those other types of brackets.
https://code.sololearn.com/cW0z4pz669Kw/?ref=app
+ 3
class Stack:
def __init__(self):
self.items = []
def push(self, item):
self.items.insert(0, item)
def pop(self):
return self.items.pop(0)
s = Stack()
inp = input()
def balanced(inp):
try:
for i in inp:
if i == str("("):
s.push('(')
elif i == str(")"):
s.pop()
else:
continue
if len(s.items) == 0:
print(" True")
else:
print("False")
except:
print("False")
balanced(inp)
+ 1
Another point of view;
lista = list()
def balanced(expression):
#your code goes here
item = list(expression)
for i in item:
if i == '(':
lista.insert(0, i)
elif i == ')':
if lista == []:
return False
else:
lista.pop(0)
if lista == []:
return True
else:
return False
print(balanced(input()))
+ 1
Hello , every one . Please i am having troubles with the exercise the the code keep giving me the same feedback that my expression is not defined
For i in expression :
It keeps telling me everytime that the term expression is not defined in this line
0
Oh, so I just missed the condition to find out if the first parentheses was an opening one. Thank you!!!
0
Javier Muñoz
What your solution?