CODE SNIPPET 1:生成所有可能的括号
class Parenthesis(object):
def __init__(self, parens):
self.parens = parens
self.my_valid_parens = {
1: ['()'],
2: ['()','()'],
}
def generate_valid_paren(self):
if self.parens <= 2:
return self.my_valid_parens[self.parens]
i = 3
while i <= self.parens:
new_set = []
for each in self.my_valid_parens[i-1]:
new_set += set([each + '()', '()' + each, '(' + each + ')'])
self.my_valid_parens[i] = list(new_set)
i += 1
if __name__ == '__main__':
num = 4
p = Parenthesis(num)
p.generate_valid_paren()
print("linesep")
print (p.my_valid_parens[num])
代码1的问题是输出在第5次输出后生成两次。 如何纠正?
CODE SNIPPET 2:通过更改逻辑&#39;&#39;生成所有可能的值组合。和&#39; |&#39;操作
def insert():
operands = [ 0, 0, 0, 1]
type(operands)
operators = ['|', '&']
type(operators)
for opers in product(operators, repeat=len(operands) - 1):
formula = [str(operands[0])]
for op, operand in zip(opers, operands[1:]):
formula.extend([op, str(operand)])
formula = ' '.join(formula)
print('{} = {}'.format(formula, eval(formula)))
print(" ")
任何人都可以建议我加入这些代码的方法,以便输出可以是这样的((0 | 0)|(0&amp; 1))= 0即表达式变量具有所有可能生成的括号,即上面获得的?
答案 0 :(得分:0)
对于问题的第一部分,valid_paren dict中的重复值导致模式在5次出现后重复。 下面不会返回重复的模式。
class Parenthesis(object):
def __init__(self, parens):
self.parens = parens
self.my_valid_parens = {
1: ['()'],
2: ['()'],
}
def generate_valid_paren(self):
if self.parens <= 2:
return self.my_valid_parens[self.parens]
i = 3
while i <= self.parens:
new_set = []
for each in self.my_valid_parens[i-1]:
new_set += set([each + '()', '()' + each, '(' + each + ')'])
self.my_valid_parens[i] = list(new_set)
i += 1
print(self.my_valid_parens)
if __name__ == '__main__':
num = 4
p = Parenthesis(num)
p.generate_valid_paren()
print("linesep")
print (p.my_valid_parens[num])
对于第二部分,我仍然无法理解你想要实现的目标,你能不能从上面的代码中得到实例。