операторы if/else, принимающие строки как прописными, так и строчными буквами в python

есть ли быстрый способ для оператора " if " принять строку независимо от того, является ли она строчной, строчной или обеими в python?

Я пытаюсь написать фрагмент кода, в котором можно ввести число "3", а также слово "три"или "три" или любую другую смесь прописных и строчных букв, и оно все равно будет принято оператором "if" в коде. Я знаю, что могу использовать "или", чтобы заставить его принять "3", а также любую другую строку, однако не знаю, как ее получить принимать строку более чем в одном случае. До сих пор я:

if (Class == "3" or Class=="three"):
    f=open("class3.txt", "a+")

6 ответов


просто преобразовать Class в нижнем регистре с помощью str.lower() и проверить его.

if Class == "3" or Class.lower() == "three":
    f=open("class3.txt", "a+")

конечно, вы также можете использовать str.upper() тоже.

if Class == "3" or Class.upper() == "THREE":
    f=open("class3.txt", "a+")

последнее, что вы можете проверить для "3" и "three" в то же время с помощью in.

if Class.lower() in {"3", "three"}:
    f=open("class3.txt", "a+")

при использовании in на if заявление, у вас есть несколько вариантов. Вы можете использовать набор, {"3", "three"}, который я использовал, список, ["3", "three"], или a кортеж, ("3", "three").

последнее, что нужно отметить, это вызов str.lower() или str.upper() on "3" даст вам "3", но вызывая его на целое число 3, выдаст ошибку, поэтому вы не можете использовать in если 3 как целое число является, возможно, значением Class.


можно использовать in оператор list.

if Class.lower() in ['3', 'three']:

просто для справки '3'.lower() возвращает строку 3.

>>> '3'.lower()
'3'

вы можете просто заставить все строки в нижнем регистре и проверить только нижний регистр следующим образом:

if (Class == "3" or Class.lower() == "three"):
    f=open("class3.txt", "a+")

Если вы используете string.lower() вы можете превратить всю строку в нижний регистр, чтобы проверить ее в операторе if. Просто замените строку вашей фактической строкой. Так что Class.lower()


как правило, чтобы сделать нечувствительное сравнение, я сделаю свою переменную в нижнем регистре. Хотя Class рискованное имя для использования, потому что class является ключевым словом s, Вы можете сделать следующее

Class = Class.lower()
if(Class =="3" or Class=="three"):

и так далее

Я бы сохранил его как более низкий, только если вам не нужно сохранять случай для чего-либо позже, и особенно если у вас есть другие сравнения, такие как против "четырех", а также


сделать строку в нижнем регистре.:

Class.lower() == "three"