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

Python EAN-13条形码生成器脚本溢出,python,python-2.7,computer-science,Python,Python 2.7,Computer Science,我有一个脚本,可以生成所有可能的EAN-13条形码。问题是它并没有运行,因为我相信我得到了算术溢出。有没有可能优化它,这样我就可以得到所有可能的值?EAN-13条码看起来像00000000000011000000000000或0293401925347等。总组合应为10^13: for k in range(13, 14): for number in list(product(range(13), repeat=k)): barcode = "".join(map(st

我有一个脚本,可以生成所有可能的EAN-13条形码。问题是它并没有运行,因为我相信我得到了算术溢出。有没有可能优化它,这样我就可以得到所有可能的值?EAN-13条码看起来像00000000000011000000000000或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)

您的代码有一些问题。让我们看看它们之间的区别

from itertools import product

k = 13

for number in product(range(10), repeat = k):
    barcode = "".join(map(str, number))
    print(barcode)
1)
k
的循环在
范围(13,14)
内。这与
k=13

2) 您的
范围(13)
错误,因为我们只想将数字
0
连接到
9


3) 您编写了
列表(product())
。这将创建一个包含10^13个数字的列表,这需要大量的空间和时间来生成。请直接迭代
itertools
对象以避免出现这种情况。如果您想了解有关迭代器和生成器的更多信息,请查看此列表。Tldr:优点:它们仅在被请求时生成下一个元素,从而节省内存空间和时间元素的计算时间,我们不使用。缺点:它们会耗尽,即一旦生成的元素被使用,生成器将无法再访问它。

EAN13s不能将校验位(“X”)作为最后一个字符吗?不理解您的问题。您的算法只考虑数字。(例如,ISBN为EAN13s,可将“X”作为最后一个字符(其校验位)当数字本身恰好是零时。这只是你的alg的一个想法:啊,好的,明白了。我现在只考虑13位数字。我已经遇到了问题。如果你能为这两个数字提供一个算法,那将是greatOkay谢谢,但是如果你设置K=3,你的工具将只迭代1->999。但是,我需要它包含值比如001、010、100、101、110、011,出于这个原因,我做了这个列表。我不理解你的问题。我的输出给我的是k=3
000 001 002 003 004…
对不起,我被搞糊涂了。我的数学完全错了。