在连接数字后使用int()会返回错误

时间:2015-01-17 22:19:50

标签: python string integer concatenation

我正在使用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。我只需要将它们转换为整数,因为我需要对它们进行一些数值运算。这就是重现错误的原因。

如何在能够将数字转换回整数的同时加入数字?

2 个答案:

答案 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)