Проверка типов данных в функции

Если в функцию передаётся кортеж, то посчитать длину всех его слов. Если список, то посчитать кол-во букв и чисел в нём. Число – кол-во нечётных цифр. Строка – количество букв. Сделать проверку со всеми этими случаями.

    `def func(a):`
        `If a== tuple():`
        `Return map(len(a.split()))`
        `If a== float():`
        `Return len(str(a))`
        `If a== str():`
        `Return len([i for i in a if  i.isalpha()])`

Что я не так делаю?


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

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

Советую использовать для проверки типов функцию isinstance(arg1, classinfo), где первый аргумент - это объект, тип которого нужно проверить, а второй это тип с которым нужно проверять(можно указывать несколько типов). И как было отмечено выше, приписывая у типа () вы вызываете их конструктор, который в свою очередь возвращает новый объект, сравнение с которым особого смысла не имеет. К тому же, использование "==" для проверки принадлежности к какому-либо типу может вызывать проблемы, хотя в вашем конкретном случае они маловероятны.

→ Ссылка