Перейти к содержимому

Как совместить два условия в питоне

  • автор:

Как совместить два условия в питоне

Условные конструкции используют условные выражения и в зависимости от их значения направляют выполнение программы по одному из путей. Одна из таких конструкций — это конструкция 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 комментария

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *