Проверьте, все ли цифры введены заглавными буквами - PullRequest
0 голосов
/ 30 апреля 2020

Мне нужно проверить, все ли мои данные введены заглавными буквами и числами, они также должны содержать «A1» и быть кратными 4.

def valid_product_code(string):

    #A1 must be in string
    if "A1" in string:
        val = True

    #String must be a multiple of 4
    if len(string) % 4 == 0:
        val = True

    #Must only have capitals or numbers
    if (char.isdigit() or char.islower() for char in string):
        val=True

    else:
        val = False

    return val

Что я делаю не так? Когда я проверяю его, он возвращает только True

Ответы [ 2 ]

2 голосов
/ 30 апреля 2020

Попробуйте, это использует некоторое регулярное выражение, чтобы проверить и убедиться, что все буквы заглавные.

import re


def valid_product_code(string):

    # Regex pattern to check for all caps
    pattern = '^[A-Z0-9]*$'

    # Validation
    valid = False

    # Check for all caps
    if re.search(pattern, string):
        # Check for A1
        if "A1" in string:
            # Check for multiple of 4
            if len(string) % 4 == 0:
                valid = True

    return valid

Регулярное выражение - отличный пример использования для чего-то подобного. Вы также можете изменить свою функцию для автоматического преобразования строки в верхний регистр с помощью string.upper (). Затем вы можете вернуть строку с заглавной буквы вместе с проверкой правильности с возвращаемой строкой valid. Это избавит от необходимости проверять заглавные буквы вместе.

2 голосов
/ 30 апреля 2020

Вам необходимо добавить ключевое слово all , чтобы оно проверило все символы, изменило значение islower на isupper и переопределило возвращаемое значение

def valid_product_code(string):

    #A1 must be in string
    if "A1" not in string:
        return False

    #String must be a multiple of 4
    if len(string) % 4 != 0:
        return False

    #Must only have capitals or numbers
    if not all(char.isdigit() or char.isupper() for char in string):
        return False

    return True
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...