Python Int对象不是可下标的错误,即使已进行了正确的转换?

Python Int对象不是可下标的错误,即使已进行了正确的转换?,python,python-3.6,Python,Python 3.6,我正在尝试创建一个类似于扩展器的程序。如果给它一个像1234这样的数字,它应该返回1000+200+30+4。然而,我不断得到一个int对象是不可下标的错误,即使我做了适当的转换 我尝试过使用新的\u str=num[inti]。。。但这仍然不起作用 def expanded_form(num): count = len(str(num))-1 new_str = "" for i in range(0,len(str(num))): new_str +=

我正在尝试创建一个类似于扩展器的程序。如果给它一个像1234这样的数字,它应该返回1000+200+30+4。然而,我不断得到一个int对象是不可下标的错误,即使我做了适当的转换

我尝试过使用新的\u str=num[inti]。。。但这仍然不起作用

def expanded_form(num):
    count = len(str(num))-1
    new_str = ""
    for i in range(0,len(str(num))):
        new_str += num[i] * 10**count + " + "
        count -= 1
    return new_str
print(expanded_form(1234))

问题是在for循环中,您正在编写num[i],这就是导致错误的原因,因为num是一个int,您无法真正访问int的索引

您试图获取该索引上的数字,并将其乘以10**count。要做到这一点,你应该试试这个

new_str += str(int(str(num)[i]) * 10 ** count) + ' + ' 
首先必须将num转换为字符串以获取该位置上的数字,但它会将其作为字符串返回,因此必须将其解析回int,以便将其与10**count相乘,然后必须再次将其转换为字符串,以便将其与“+”连接

如果要避免多次解析,请尝试在for循环中执行此操作

new_str = str(num)[i] + '0' * count + ' + '

你可以使用count是strnum[i]后面应该跟的零的个数,而不是将它乘以10的幂。你的错误告诉你不能给整数下标。这里:num[i]。num是一个整数。你应该把它重新放在弦上。 这就是说,要做你想做的事情,你需要将数字num[i]重铸为int,以便进行数学运算

def expanded_form(num):
    count = len(str(num))-1
    new_str = []
    for i in range(0,len(str(num))):
        new_str.append(int(str(num)[i]) * 10**count)
        count -= 1
    return ' + '.join(map(str, new_str))

print(expanded_form(1234))

请注意,我为new_str创建了一个列表,并使用join来构建带有sum的字符串,以消除末尾多余的“+”。我还需要map将所有整数转换回字符串,否则join不起作用。

如果num是int,我是什么都不重要。非常好的解决方案。我必须添加一些东西来满足问题的规范,比如在一些测试用例中去掉额外的零,在这些测试用例中我必须去掉零。我很感激你的回答。我实现了上面列出的两个解决方案,非常好。谢谢你的帮助!