Conditionals, Loops
We should fail in two possible ways:
if we close a parentheses when none are open
if we end up with stray open parentheses
Our solution keeps track of how many parentheses are open and fails on either of those conditions. Otherwise, it returns True:
def has_balanced_parens(phrase):
"""Does a string have balanced parentheses?"""
# START SOLUTION
parens = 0
for char in phrase:
if char == "(":
parens = parens + 1
elif char == ")":
parens = parens - 1
if parens < 0:
# We can never close more than we have open
return False
# Make sure we have none left
if parens > 0:
return False
else:
return True
Our Balanced Brackets problem is related but harder, as it requires checking other types of opening-and-closing marks. Give it a try!