Как совместить два условия в питоне
Условные конструкции используют условные выражения и в зависимости от их значения направляют выполнение программы по одному из путей. Одна из таких конструкций — это конструкция if . Она имеет следующее формальное определение:
if логическое_выражение: инструкции [elif логическое выражение: инструкции] [else: инструкции]
В самом простом виде после ключевого слова if идет логическое выражение. И если это логическое выражение возвращает True, то выполняется последующий блок инструкций, каждая из которых должна начинаться с новой строки и должна иметь отступы от начала выражения if (отступ желательно делать в 4 пробела или то количество пробелов, которое кратно 4):
language = "english" if language == "english": print("Hello") print("End")
Поскольку в данном случае значение переменной language равно «english», то будет выполняться блок if, который содержит только одну инструкцию — print(«Hello») . В итоге консоль выведет следующие строки:
Hello End
Обратите внимание в коде на последнюю строку, которая выводит сообщение «End». Она не имеет отступов от начала строки, поэтому она не принадлежит к блоку if и будет выполняться в любом случае, даже если выражение в конструкции if возвратит False.
Но если бы мы поставили бы отступы, то она также принадлежала бы к конструкции if:
language = "english" if language == "english": print("Hello") print("End")
Блок else
Если вдруг нам надо определить альтернативное решение на тот случай, если выражение в if возвратит False, то мы можем использовать блок else :
language = "russian" if language == "english": print("Hello") else: print("Привет") print("End")
Если выражение language == «english» возвращает True, то выполняется блок if, иначе выполняется блок else. И поскольку в данном случае условие language == «english» возвращает False, то будут выполняться инструкция из блока else .
Причем инструкции блока else также должны имет отступы от начала строки. Например, в примере выше print(«End») не имеет отступа, поэтому она не входит в блок else и будет выполнятьься вне зависимости, чему равно условие language == «english» . То есть консоль нам выведет следующие строки:
Привет End
Блок else также может иметь несколько инструкций, которые должны иметь отступ от начала строки:
language = "russian" if language == "english": print("Hello") print("World") else: print("Привет") print("мир")
elif
Если необходимо ввести несколько альтернативных условий, то можно использовать дополнительные блоки elif , после которого идет блок инструкций.
language = "german" if language == "english": print("Hello") print("World") elif language == "german": print("Hallo") print("Welt") else: print("Привет") print("мир")
Сначала Python проверяет выражение if . Если оно равно True, то выполняются инструкции из блока if. Если это условие возвращает False, то Python проверяет выражение из elif .
Если выражение после elif равно True , то выполняются инструкции из блока elif . Но если оно равно False то выполняются инструкции из блока else
При необходимости можно определить несколько блоков elif для разных условий. Например:
language = "german" if language == "english": print("Hello") elif language == "german": print("Hallo") elif language == "french": print("Salut") else: print("Привет")
Вложенные конструкции if
Конструкция if в свою очередь сама может иметь вложенные конструкции if:
language = "english" daytime = "morning" if language == "english": print("English") if daytime == "morning": print("Good morning") else: print("Good evening")
Здесь конструкция if содержит вложенную конструкцию if/else. То есть если переменная language равна «english», тогда вложенная конструкция if/else дополнительно проверяет значение переменной daytime — равна ли она строке «morning» ли нет. И в данном случае мы получим следующий консольный вывод:
English Good morning
Стоит учитывать, что вложенные выражения if также должны начинаться с отступов, а инструкции во вложенных конструкциях также должны иметь отступы. Отступы, расставленные не должным образом, могут изменить логику программы. Так, предыдущий пример НЕ аналогичен следующему:
language = "english" daytime = "morning" if language == "english": print("English") if daytime == "morning": print("Good morning") else: print("Good evening")
Подобным образом можно размещать вложенные конструкции if/elif/else в блоках elif и else:
language = "russian" daytime = "morning" if language == "english": if daytime == "morning": print("Good morning") else: print("Good evening") else: if daytime == "morning": print("Доброе утро") else: print("Добрый вечер")
Условные операторы
Программа может выполняться постепенно: строка за строкой, выражение за выражением от начала и до конца, не пропуская ни единой строки кода. Но такое в реальности происходит редко. Зачастую необходимо ввести вариативность, чтобы при выполнении определенного условия, происходило одно, а при его невыполнении – другое. Так применяются условные операторы.
Определение
Условные операторы в Python 3 иногда называют операторами ветвления. Они созданы, чтобы программа могла выбрать, какой инструкции стоит следовать при определенном значении заданной переменной. Условные операторы состоят из заголовка и тела. Заголовок – это сама конструкция и то, что стоит рядом с ним (не в фигурных скобках в других языках программирования или перед двоеточием в Python). Тело – то, что написано после двоеточия. Чтобы программа поняла, что код после него является вложенным, необходимо обязательно сделать отступ в виде четырех пробелов. Обычно они ставятся автоматически, если пользователь работает в специально созданной среде программирования.
Заметим, что пользоваться клавишей Tab для создания отступа крайне нежелательно.
Ситуаций, в которых можно было бы применить условный оператор, великое множество. К ним, например, относится:
- Определение, сдал ли студент экзамен. При количестве верных ответов 10 из 15 – сдал, если меньше – не сдал;
- Выяснение размера скидки. Если купил 10 товаров – скидка 10%, если меньше – скидка не предоставляется.
Оператор if
С английского название этого оператора переводится, как «если». То есть он задает условие. После данного оператора записывается само выражение. Если оно оказывается истинным, то программа переходит к выполнению инструкции, заданной в указанном операторе. Выражение считается истинным, когда оно:
- не равно нулю;
- не является пустым;
- является логическим
Для ясности рассмотрим пример использования if — условия в Python 3:
if 3: print("Привет 3")
На экране перед пользователем появится запись: Привет 3.
a = 6 if a == 6: print("Привет 2")
На дисплее компьютера отобразится: Привет 2.
Также можно задать условие формулой или условным выражением:
a = 5 if a > 2: print("Привет 3")
Переменная равна 5, условие, чтобы она была больше 2. Оно истинное, поэтому перед нами появится: Привет 3.
Еще более сложный вариант с несколькими переменными:
a = 0 b = 34 c = 10 if c < 100: a = b + c print(a)
Поскольку с действительно меньше 100, а станет равным 44, и именно это число появится на дисплее при выполнении данного кода. Если бы с изначально было большее 100, например, 110, то на экране бы отобразился 0, переменная а просто не изменилась бы вообще.
Оператор else
Иногда программе нужно указать, что делать, если условие оказывается ложным. Для этого задается новый набор инструкций и используется конструкция if – else. Кстати, стоит запомнить, что в else не может быть никакого логического выражения. Также невозможна и ситуация, при которой выполнятся обе ветви (и if, и else).
a = 7 if a > 5: print("Да") else: print("Нет")
При выполнении данного кода на компьютере появится: Да. Это происходит, потому что 7 действительно больше заданной в условии цифры 5.
Посмотрим, что же случится, если условие станет ложным. Возьмем тот же код, но изменим переменную а.
a = 3 if a > 5: print("Да") else: print("Нет")
Очевидно, что перед пользователем появится слово «Нет», поскольку 3 не больше 5, а меньше.
product1 = 30 product2 = 23 if product1+ product2 > 70 : print("70 рублей не хватит") else: print("Денег хватает, все оплачено")
В данном случае программист увидит запись: Денег хватает, все оплачено, поскольку 30 + 23 = 53, а это меньше чем 70.
Оператор elif и конструкция if – elif – else
Вообще elif примерно расшифровывается, как else + if. Чтобы можно было реализовать программу, которая выбирала бы из нескольких альтернативных вариантов, используется указанная конструкция.
Рассмотрим код, в котором имеется несколько условий:
if balance < 0: print("Баланс ниже нуля, положите деньги на счет, чтобы Вам не выписали штраф") elif balance == 0: print("Баланс равен нулю, скорее внесите деньги на счет") else: print("Ваш баланс выше нуля, все хорошо")
Так, программа может рассмотреть варианты с тремя условиями. И если переменная balance будет равна 150, то перед пользователем появится надпись: Ваш баланс выше нуля, все хорошо.
Оператор elif позволяет упростить код. Сделать его легче читаемым. Позволяет избежать написание несколько условий if в Python.
Тернарный оператор
Иногда для сокращения записи используется так называемый тернарный оператор, благодаря ему код набирается в одну строку. Посмотрим на пример того, как можно записать условие Python в одну строку:
is_happy = True state = "happy" if is_happy else "not happy"
Чтобы не расписывать в несколько строк оператор if, просто используем сжатый вариант.
Конструкция switch – case
Данная инструкция в Python не используется. Вместо этого можно применять конструкции с несколькими elif. Например, программист хочет написать код, чтобы программа ставила оценку за пройденный студентами тест. При этом оценок может быть несколько. Тогда можно оформить так:
if grade >= 50: print("Оценка 5 с плюсом") elif grade >= 45: print("Оценка 5") elif grade >= 35: print("Оценка 4") elif grade >= 25: print("Оценка 3") else: print("Тест провален")
В этом случае значение переменной grade будет сравниваться со всеми условиями подряд. Однако когда условие станет истинным, выполнение кода остановится и на экране появится сообщение об оценке. Например, если grade равен 30, то на дисплей будет выведена надпись: Оценка 3; если же переменная будет ниже 25, то пользователь увидит: Тест провален.
Если начинающий программист успешно владеет условными конструкциями, это существенно облегчает написание программ и позволяет точнее обозначать их действия. Для усложнения можно создавать целые комбинации операторов, а также объединять их с помощью циклов.
Как совместить два условия в питоне
Здравствуйте,такая проблема,я всего первый день изучаю Python и у мне потребовалось несколько условий,пишу калькулятор, но если вводить несколько через or, не работает,а если вводить по одному то получается.
what = (input("что делаем (+,-,*,/): ")) if what != "+" or "-" or "*" or "/": print("знак выбран не правильно") exit(0) else: a = float(input("введите первое число:") ) b = float(input("введите второе число:") ) if what == "+": c = a + b elif what == "-": c = a - b elif what == "*": c = a * b elif what == "/": c = a / b print("Результат:" + str(c)) cmd: D:\programm python>kalkylutor.py что делаем (+,-,*,/): = знак выбран не правильно D:\programm python>kalkylutor.py что делаем (+,-,*,/): + знак выбран не правильно
D:\programm python>kalkylutor.py
что делаем (+,-,*,/): -
знак выбран не правильно
Как можно решить данную проблему?
______________________
Форматируйте код и используйте тег [CODE] (кнопка [CODE] в форме сообщения) при вставке кода на форум. Подробнее в FAQ
Последний раз редактировалось Вадим Мошев; 15.08.2019 в 14:20 .
| Алексей2289 |
| Посмотреть профиль |
| Найти ещё сообщения от Алексей2289 |
Как сделать несколько условий в if и чтобы они все выполнялись?
Но вот загвоздка в if должны исполниться обе функции а оператор && проверяет сперва одну если там false то вторую даже не проверяет.
Обе функции возвращают true или false от результата работы. Но в них еще есть функционал который нужно исполнить в обеих независимо от результата.
Придумал варианты записать через запятую)) работает ну js все хавает не знаю правильно ли это.
Еще есть придумал вариант с умножением) true * true = 2 a true * true * false = 0
Еще есть мысль возвращать число 0 или 1 и потом считать сумму и если она равна количеству функций тогда все ок.
Ну это мои варианты. Гугл что то ничего не выдает полезного на этот счет..
Просто интересно есть какое вариант 100% правильный. Вызвать обе функции в if
- Вопрос задан более трёх лет назад
- 67525 просмотров
3 комментария
Простой 3 комментария