我写了一个脚本来打印出彩票组合。我的目标是:在1-49之间的彩票中有6个数字意味着有13,983,816种组合。我想在IN ORDER中打印出所有组合,同时确保没有重复。
到目前为止,这是我的代码:
import random
numbers = []
for i in range(2):
for j in range(6):
numbers.append(random.randint(1,49))
for k in range(j):
while numbers[j]==numbers[k]:
numbers[j]=random.randint(1,49)
print sorted(numbers)
numbers = []
f = open('combinations.txt', 'w')
f.write(str(sorted(numbers)))
问题是:
终端输出为:
[18, 20, 27, 32, 44, 48]
[5, 7, 10, 13, 33, 45]
我想从[1,2,3,4,5,6]
开始,最后到[44,45,46,47,48,49]
。所以我需要订购结果。
另外,我尝试将列表转换为字符串,以便将结果放在一个大文本文件中,但我现在只是将[]
打印到文本文件中。
答案 0 :(得分:5)
>>> from itertools import combinations
>>> for comb in combinations(range(1,50), 6):
... print comb #Hit Enter at your own risk
将组合打印到文本文件中:
with open('combinations.txt', 'w') as f:
for comb in combination:
f.write(str(comb) + '\n')
答案 1 :(得分:3)
您正在清除列表然后写入文件。
from itertools import combinations
f = open('combinations.txt', 'w')
for comb in combinations(range(1,50), 6):
f.write(str(comb))
f.write('\n')
f.close()
但是确保您至少有350 MB的磁盘空间可用!并且需要一些时间。
(我检查了348168480字节:
>>> s = 0
>>> for comb in combinations(range(1,50), 6):
... s += len(repr(comb))+2
...
>>> s
348168480
)。
答案 2 :(得分:0)
**import itertools
f= open('combinations.txt','w')
numb = [1,2,3,4,5,6,7]
it = itertools.combinations(numb,3)
for x in it:
f.write(str(x))
f.write('\n')
f.close()**
你去,只需添加尽可能多的数字麻木并将其变量更改为对应的r