Python-fout: niet-ondersteunde operandtype(s) voor +: ‘int’ en ‘NoneType’

Ik begrijp deze fout OF wat het betekent niet. Ik zal mijn code eronder plakken, maar ik denk niet dat het echt relevant is; Ik wil gewoon deze fout begrijpen.

Het is maar een stukje code om de letters in alle cijfers 1 – 1000 (inclusief) bij elkaar op te tellen

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)

Antwoord 1, autoriteit 100%

Als geen van de if-tests in number_translator()de waarde true oplevert, retourneert de functie None. De foutmelding is daar het gevolg van.

Als je een fout ziet die 'NoneType'bevat, betekent dit dat je een operand of een object hebt dat Noneis terwijl je iets anders verwachtte.


Antwoord 2, autoriteit 20%

In je gigantische elif-keten heb je 13 overgeslagen. Misschien wil je een foutmelding geven als je het einde van de keten bereikt zonder iets terug te geven, om gemiste nummers en onjuiste aanroepen van de functie op te vangen :

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

Antwoord 3, autoriteit 3%

Ik kreeg een soortgelijke fout met de operand ‘/’ tijdens het verwerken van afbeeldingen. Ik ontdekte dat de map een tekstbestand bevatte dat is gemaakt door de ‘XnView’-afbeeldingsviewer. Dit soort fouten treedt dus op wanneer een object niet het verwachte soort object is.

Other episodes