операторы 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"):
и так далее
Я бы сохранил его как более низкий, только если вам не нужно сохранять случай для чего-либо позже, и особенно если у вас есть другие сравнения, такие как против "четырех", а также