String对象应该是可订阅的,但是int表示不可订阅

时间:2017-11-19 12:42:22

标签: python int typeerror

我一直收到这个错误,但我无法理解我做错了什么。 我查看了其他类似的问题并尝试应用它们,但它没有用。

代码是chekc,如果数字中的个别数字,当^ 3等于原始数字时。

def addCubes(a):
    total = 0
    for i in (0, len(str(a))):
        total += (a[i])**3
    if total == a:
        print("feck yah")
    else:
        print("NEIN!!!")

2 个答案:

答案 0 :(得分:3)

a转换为字符串,然后访问字符串索引i处的数字,将数字转换为int,然后将其立方体化:

total = 0
for i in range(0, len(str(a))):
    total += int(str(a)[i])**3

你也可以试试这个:

for i in str(a):
        total += int(i) ** 3

重写功能:

def addCubes(a):
    total = 0
    for i in str(a):
        total += int(i) ** 3
    if total == a:
        print("feck yah")
    else:
        print("NEIN!!!")

addCubes(371)

feck yah
>>>

答案 1 :(得分:1)

你可以在one-line中解决这个问题!只需使用generator expression内的sum cubeinteger character stringified a sum(int(d)**3 for d in str(a)) == a }}:

if-else

我会允许您将此合并到statements a = 28 --> False a = 153 --> True 中,但您可以看到它有效:

当...

{{1}}