Почему не перехватывается исключение NameError?

Немогу понять, почему не перехватывается исключение NameError. Что не так с кодом?

def chek(args):
    c = 1
    while c == 1:
        try:
            count = 0
            for a in args:
                args[count] = int(a)
                count += 1
        except (TypeError, ValueError):
            del args[count]
        except NameError:
            print(count)
            args[count] = ''
        else:
            c = 0
    return args

args = [5,'z',7,6,t,4]
args = chek(args)

Ответы (1 шт):

Автор решения: nomnoms12

Переменная t не определена:

args = [5, 'z', 7, 6, t, 4]
#                     ^

Вы не перехватываете это исключение. Чтобы перехватывать его:

try:
    args = [5, 'z', 7, 6, t, 4]
except NameError:
    pass


Ваше решение можно упростить:

def chek(li):
    i = 0
    while i < len(li):
        try:
            li[i] = int(li[i])
            i += 1
        except (TypeError, ValueError):
            del li[i]
    return li
→ Ссылка