Python EAN-13 条码生成器脚本溢出
Python EAN-13 Barcode generator script overflow
我有一个脚本可以生成所有可能的 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)
您的代码存在一些问题。让我们看看
的区别
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 个数字的列表,这需要大量的 space 和时间来生成。而是直接迭代 itertools
对象以避免这种情况。如果您想了解更多有关迭代器和生成器的信息,请查看此 introduction to generators。 Tldr:优势:它们仅在被询问时生成下一个元素,从而节省内存 space 和元素的计算时间,我们不使用。缺点:它们会耗尽,即一旦使用了生成的元素,生成器就无法再访问它。
我有一个脚本可以生成所有可能的 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)
您的代码存在一些问题。让我们看看
的区别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 个数字的列表,这需要大量的 space 和时间来生成。而是直接迭代 itertools
对象以避免这种情况。如果您想了解更多有关迭代器和生成器的信息,请查看此 introduction to generators。 Tldr:优势:它们仅在被询问时生成下一个元素,从而节省内存 space 和元素的计算时间,我们不使用。缺点:它们会耗尽,即一旦使用了生成的元素,生成器就无法再访问它。