.lower () Возвращает True при 0 - PullRequest
0 голосов
/ 16 июня 2020

Я пытаюсь выполнить задачу по обеспечению того, чтобы все символы в строке соответствовали следующим условиям:

  • Делится на 4
  • Содержит «A1» в строке
  • Строка содержит только прописные буквы и числа

Для большинства строк функция работает; однако я возвращаю ложный False, когда представлен 0.

Проблема локализована для l oop (for character in string:), как показано в выходных данных.

def valid_product_code(string):
if len(string) % 4 == 0:
    print("String is divisible by 4")
    if "A1" in string:
        print("A1 is contained within string")
        for character in string:
            print(character)
            if character == character.lower():
                print("Character is a Lowercase")
                return False
            elif character == ("!"or "." or "," or ":"):
                print("Character is punct")
                return False
            else:
                return True
    else:
        return False
else:
    return False

print (valid_product_code ("0O3LG6EWN7AA1NI596LCVBRZ"))

Код выводится следующим образом:

String is divisible by 4
A1 is contained within string
0
Character is a Lowercase
False

Ответы [ 3 ]

1 голос
/ 16 июня 2020

Короткий ответ: '0'.lower() == '0'. Вместо проверки на плохие символы (например, строчные буквы или знаки препинания) вы должны описать в Python, что значит быть хорошим персонажем.

В этом случае хороший символ просто означает

'A' <= character <= 'Z' or '0' <= character <= '9'
1 голос
/ 16 июня 2020

То, что вы делаете, - это un-pythoni c. Вместо if character == character.lower(): используйте .islower().

.islower() возвращает True, если в строке нет прописных букв и есть хотя бы одна строчная буква. Это не то же самое, что все символы являются буквами.

1 голос
/ 16 июня 2020

вам нужно использовать if character.islower(): не if character == character.lower():, потому что '0'.lower()=='0', чтобы оператор if (if character == character.lower():) всегда возвращал true, если ваша строка содержит любое di git

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