@c1edue

TypeError: cannot unpack non-iterable NoneType object как исправить?

не понимаю почему ошибка

from typing import Tuple


def four_squares(k: int) -> Tuple[int, int, int, int]:
    list=[]
    for i in range(1, k+1):
        if k==i**2:
            return [i,0,0,0]
    for i in range(1, k+1):
        for j in range(i, k+1):
            if k==i**2+j**2:
                return [i, j,0,0]
    for i in range(1, k+1):
        for j in range(i, k+1):
            for l in range(j, k+1):
                if k==i**2+j**2+l**2:
                    return [i, j, l,0]
    for i in range(1, k+1):
        for j in range(i, k+1):
            for l in range(j, k+1):
                for m in range(l, k+1):
                    if k==i**2+j**2+l**2+m**2:
                        return [i, j, l, m]
for i in [0, 1, 17, 33, 215, 333, 2**12-3, 1234567890, 106369249365575352836589875696130383747]:
    a, b, c, d = four_squares(i)
выдает ошибку:
Traceback (most recent call last):
File "<string>", line 25, in <module>
TypeError: cannot unpack non-iterable NoneType object
  • Вопрос задан
  • 491 просмотр
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
У тебя вполне возможно, что в four_squares() не отработает ни один return. В этом случае функция неявно вернёт None. А распаковать None как кортеж нельзя.
Хотя бы сделай так:
result = four_squares(i)
if result is not None:
    a, b, c, d = result
    ...  # тут работаешь с a,b,c,d
else:
    ...  # а тут решаешь, что делать, если функция вернула None
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы