在Python中检查唯一输出
发布时间:2020-12-20 13:01:01 所属栏目:Python 来源:网络整理
导读:我昨天遇到了一个有趣的数学问题,并解决了,但是我写的代码,我不得不做一个键盘中断,否则它会永远运行,哈哈.因此我将其更改为具有结束条件,但现在它只打印1个解决方案并停止. 问题是这样的:“你有数字123456789,按顺序.在每个数字之间,你必须插入任何内容,加
我昨天遇到了一个有趣的数学问题,并解决了,但是我写的代码,我不得不做一个键盘中断,否则它会永远运行,哈哈.因此我将其更改为具有结束条件,但现在它只打印1个解决方案并停止.
问题是这样的:“你有数字123456789,按顺序.在每个数字之间,你必须插入任何内容,加号或乘法符号,以便结果表达式等于2002.编写一个打印所有的程序解决方案.(有两个.)“ import random def try1(param): global solved opers = ['+','*',''] hotpotato = ('%s'.join(param) % (random.choice(opers),random.choice(opers),) ) if eval(hotpotato) == 2002: solved += 1 print "Solution:",hotpotato,"= 2002 :-)" else: pass solved = 0 while solved == 0: try1('123456789') 此代码打印它遇到的第一个解决方案并停止.任何人都可以告诉我如何让它在停止前打印两种解决方案吗? 解决方法
将您的解决方案存储在一组中:
solutions = set([]) 每次找到解决方案时,请更新集: solutions.append(solution) 集合很好,因为不存储重复项: >>> len(set([1,1,1])) 1 所以只需循环直到集合的大小大于1: while len(solved) < 2: try1('123456789') 此外,您可以缩短此代码: hotpotato = ('%s'.join(param) % (random.choice(opers),) ) 对此: hotpotato = ('%s'.join(param) % (random.choice(opers) for i in range(8)))) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |