【发布时间】:2018-05-31 08:16:14
【问题描述】:
代码片段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 次输出后生成了两次。 如何纠正?
代码片段 2:通过更改逻辑“&”和“|”生成所有可能的值组合运营商
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 & 1)) = 0,即表达式变量具有所有可能生成的括号,即在上面获得的?
【问题讨论】:
标签: python expression logical-operators brackets