Python错误:+:'int'和'NoneType'不支持的操作数类型

时间:2014-06-08 20:03:24

标签: python

我不明白这个错误或它意味着什么。我会将我的代码粘贴到下面,但我认为它不是真的相关;我只想了解这个错误。

只需要一些代码就可以将所有数字中的字母相加1 - 1000(含)

def number_translator(x):
    if x == 1:
        return 3
    elif x == 2:
        return 3
    elif x == 3:
        return 5
    elif x == 4:
        return 4
    elif x == 5:
        return 4
    elif x == 6:
        return 3
    elif x == 7:
        return 5
    elif x == 8:
        return 5
    elif x == 9:
        return 4
    elif x == 10:
        return 3
    elif x == 11:
        return 6
    elif x == 12:
        return 6
    elif x == 14:
        return 8
    elif x == 15:
        return 7
    elif x == 16:
        return 7
    elif x == 17:
        return 9
    elif x == 18:
        return 8
    elif x == 19:
        return 8
    elif x == 20:
        return 6
    elif x == 30:
        return 6
    elif x == 40:
        return 5
    elif x == 50:
        return 5
    elif x == 60:
        return 5
    elif x == 70:
        return 7
    elif x == 80:
        return 6
    elif x == 90:
        return 6

count = 0
for element in range(1, 1001):
    if element < 21:
        count += number_translator(element)              # for numbers 1 - 20
    elif 20 < element < 100:
        count += number_translator(int(str(element)[0]) * 10) + number_translator(int(str(element)[1]))  # for numbers 21 through 100
    elif element % 100 == 0 and element != 1000:
        count += number_translator(int(str(element)[0])) + 7   # for numbers divisible by 100, but not 1000
    elif element == 1000:
        count += 11                                          # just for 1000
    elif element % 100 < 20:
        count += number_translator(int(str(element)[0])) + 10 + number_translator(int(str(element)[1:3]))      # now I add in numbers like 101 - 120, 201 - 220, etc.
    else:
        count += number_translator(int(str(element)[0])) + 10 + number_translator(int(str(element)[1]) * 10) + number_translator(int(str(element)[2])) # now the rest( 121, 122, 123, 225, 256, 984, etc.)

print(count)

3 个答案:

答案 0 :(得分:13)

如果if中的number_translator()测试都没有评估为true,则函数返回None。错误信息就是这样的结果。

每当您看到包含'NoneType'的错误时,这意味着当您预期其他内容时,您有一个操作数或None对象。

答案 1 :(得分:4)

在您的巨型elif链中,您跳过了13.如果您在没有返回任何内容的情况下到达链的末尾,可能想要抛出错误,以捕获您错过的数字和错误的函数调用:

...
elif x == 90:
    return 6
else:
    raise ValueError(x)

答案 2 :(得分:1)

在处理图像时,'/'操作数出现类似错误。我发现该文件夹包含一个由“ XnView”图像查看器创建的文本文件。因此,当某些对象不是预期的对象时,就会发生这种错误。