我正在使用itertools.combinations_with_replacement
列出所有可能包含某些数字的数字。它们必须是用于连接它们的字符串,但是当我将它们转回整数时,它会产生错误。
Traceback (most recent call last):
File "p35.py", line 16, in <module>
print int(num)
ValueError: invalid literal for int() with base 10: ''
这是我使用的代码。
from itertools import combinations_with_replacement
for i in range(6):
for j in combinations_with_replacement(['1','3','7','9'],i):
num =''.join(j)
print int(num)
请注意,目标不是打印num
。我只需要将它们转换为整数,因为我需要对它们进行一些数值运算。这就是重现错误的原因。
如何在能够将数字转换回整数的同时加入数字?
答案 0 :(得分:2)
试试这个:
for i in range(1, 6):
如果我们在range
(默认起始值)中启动0
,我们会得到一个初始的空列表作为combinations_with_replacement
的结果,这将导致值num
的{{1}},无效的整数。
答案 1 :(得分:0)
对于内循环的第一次迭代,你得到'',这是一个空字符串。并且int()不能对空字符串进行操作。所以,检查一下你是否有像num这样的值:
import ast
from itertools import combinations_with_replacement
for i in range(3):
for j in combinations_with_replacement(['1','3','7','9'],i):
num =''.join(j)
if num:
print int(num)