平衡括号程序 Python:匹配函数返回不正确的值
Balanced Parentheses Program Python: Match Function Returning Incorrect Value
所以我正在尝试做“括号串是否平衡?” Python 中的程序,虽然我的平衡函数正常工作,但我创建的用于检查括号是否匹配的函数返回的值不正确。我将附上整个代码、注释和所有内容,以便您查看。我尝试这样做的第一种方法是使用条件 if/else 语句。对于这种方法,即使括号匹配,我也一直得到 False 。对于第二种方法,我一直收到 TypeError: 。这是我的代码。
from collections import deque
堆栈 = 双端队列()
#dir(堆栈)
#使用堆栈查看输入字符串是否有一组平衡的括号
#function 告诉应该匹配哪些括号。以后会用到
def is_match(paren1, paren2):
#dictionary for more efficiency rather than a bunch of conditionals
#match_dict = {
# ')': '(',
# ']': '[',
# '}': '{'
#}
if paren1 == '(' and paren2 == ')':
return True
if paren1 == '[' and paren2 == ']':
return True
if paren1 == '{' and paren2 == '}':
return True
else:
return False
#print(match_dict[paren1] == paren2)
#return match_dict[paren1] == paren2
def is_balanced(字符串):
#start with an iterative for loop to index through the string
for i in string:
#check to see if the index of the string is an open parentheses, if so, append to stack
if i in '([{':
stack.append([i])
print(i)
#if index is not in substring, check to see if string is empty
else:
if len(stack) == 0:
return 'not balanced'
else:
match = stack.pop()
if is_match(match, i) == True:
return 'balanced'
else:
return 'not balanced'
string = ('([{}])')
is_balanced(字符串)
使用 stack.append(i)
而不是 stack.append([i])
将元素 i
添加到双端队列:
def is_balanced(string):
# start with an iterative for loop to index through the string
for i in string:
# check to see if the index of the string is an open parentheses, if so, append to stack
if i in "([{":
stack.append(i) # <- HERE!
print(i)
# ...
如果您想通过从可迭代参数 ([i]
) 附加元素来扩展双端队列,请使用 extend
:
stack.extend([i])
有关详细信息,请参阅 Python documentation。
所以我正在尝试做“括号串是否平衡?” Python 中的程序,虽然我的平衡函数正常工作,但我创建的用于检查括号是否匹配的函数返回的值不正确。我将附上整个代码、注释和所有内容,以便您查看。我尝试这样做的第一种方法是使用条件 if/else 语句。对于这种方法,即使括号匹配,我也一直得到 False 。对于第二种方法,我一直收到 TypeError: 。这是我的代码。
from collections import deque
堆栈 = 双端队列()
#dir(堆栈)
#使用堆栈查看输入字符串是否有一组平衡的括号
#function 告诉应该匹配哪些括号。以后会用到
def is_match(paren1, paren2):
#dictionary for more efficiency rather than a bunch of conditionals
#match_dict = {
# ')': '(',
# ']': '[',
# '}': '{'
#}
if paren1 == '(' and paren2 == ')':
return True
if paren1 == '[' and paren2 == ']':
return True
if paren1 == '{' and paren2 == '}':
return True
else:
return False
#print(match_dict[paren1] == paren2)
#return match_dict[paren1] == paren2
def is_balanced(字符串):
#start with an iterative for loop to index through the string
for i in string:
#check to see if the index of the string is an open parentheses, if so, append to stack
if i in '([{':
stack.append([i])
print(i)
#if index is not in substring, check to see if string is empty
else:
if len(stack) == 0:
return 'not balanced'
else:
match = stack.pop()
if is_match(match, i) == True:
return 'balanced'
else:
return 'not balanced'
string = ('([{}])')
is_balanced(字符串)
使用 stack.append(i)
而不是 stack.append([i])
将元素 i
添加到双端队列:
def is_balanced(string):
# start with an iterative for loop to index through the string
for i in string:
# check to see if the index of the string is an open parentheses, if so, append to stack
if i in "([{":
stack.append(i) # <- HERE!
print(i)
# ...
如果您想通过从可迭代参数 ([i]
) 附加元素来扩展双端队列,请使用 extend
:
stack.extend([i])
有关详细信息,请参阅 Python documentation。