Не могу понять ,как все условия добавить

Напишите функцию is_valid_pin_codes, которая будет принимать в качестве параметра список этих пин-кодов — строка из четырех цифр, и возвращать логическое значение — валидный список или нет. Убедитесь в том, что среди этих пин-кодов в списке не будет дубликатов, все они хранятся в виде строк, их длина равна 4 символам и содержат они только цифры.

Пример аргумента для функции is_valid_pin_codes:

['1101', '9034', '0011'] Если список удовлетворяет всем поставленным условиям, функция возвращает логическое значение True. Если хоть одно из условий нарушено, возвращаемое значение — False. Предусмотреть проверку на пустой список в аргументе функции и вернуть False. Вот мой код:

def is_valid_pin_codes(pin_codes):
    for x in pin_codes:
        if pin_codes.count(x) < 1 and len(x) == 4 and pin_codes.isnumeric():
            return True
        else:
            return False

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

Автор решения: Сергей

Ваша идея была верной. Исполнение должно быть улучшено.

  1. проверка счета - на равенство.

  2. проверка типа - на строку.

  3. выход с False при пустой строке или первом же несовпадении и нормальное завершение с True.

def is_valid_pin_codes(pin_codes):
    if not len (pin_codes):
        return False
    for x in pin_codes:
        if not (pin_codes.count(x) == 1 and type(x) == str and len(x) == 4):
            return False
    return True
→ Ссылка