Python EAN-13条码生成器脚本溢出

时间:2018-01-20 07:56:56

标签: python python-2.7 computer-science

我有一个脚本可以生成所有可能的EAN-13条形码。问题是它没有运行因为我相信我得到了算术溢出。是否有可能对此进行优化,以便获得所有可能的值? EAN-13条形码看起来像 0000000000001 1000000000000 0293401925347 等。总组合应为10 ^ 13:

for k in range(13, 14):
    for number in list(product(range(13), repeat=k)):
        barcode = "".join(map(str, number))
        print(barcode)

1 个答案:

答案 0 :(得分:2)

您的代码存在一些问题。让我们来看看差异

from itertools import product

k = 13

for number in product(range(10), repeat = k):
    barcode = "".join(map(str, number))
    print(barcode)

1)k的循环位于range(13, 14)。这与k=13
相同 2)您的range(13)错误,因为我们只想将数字0加入9
3)你写了list(product()。这将创建一个包含10 ^ 13个数字的列表,这需要大量的空间和时间来生成。直接在itertools对象上迭代以避免这种情况。如果您想了解有关迭代器和生成器的更多信息,请查看此introduction to generators。 Tldr:优势:他们只会在被问到时生成下一个元素,节省内存空间和元素的计算时间,我们不会使用。缺点:它们排气,即一旦使用了生成的元件,发电机就不能再进入。