Как сделать выбор действия в python
Перейти к содержимому

Как сделать выбор действия в python

  • автор:

Инструкция if-elif-else, проверка истинности, трехместное выражение if/else

Python 3 логотип

Условная инструкция if-elif-else (её ещё иногда называют оператором ветвления) — основной инструмент выбора в Python. Проще говоря, она выбирает, какое действие следует выполнить, в зависимости от значения переменных в момент проверки условия.

Синтаксис инструкции if

Сначала записывается часть if с условным выражением, далее могут следовать одна или более необязательных частей elif, и, наконец, необязательная часть else. Общая форма записи условной инструкции if выглядит следующим образом:

Простой пример (напечатает 'true', так как 1 - истина):
Чуть более сложный пример (его результат будет зависеть от того, что ввёл пользователь):
Конструкция с несколькими elif может также служить отличной заменой конструкции switch - case в других языках программирования.

Проверка истинности в Python

  • Любое число, не равное 0, или непустой объект — истина.
  • Числа, равные 0, пустые объекты и значение None — ложь
  • Операции сравнения применяются к структурам данных рекурсивно
  • Операции сравнения возвращают True или False
  • Логические операторы and и or возвращают истинный или ложный объект-операнд
Истина, если оба значения X и Y истинны.
Истина, если хотя бы одно из значений X или Y истинно.
Истина, если X ложно.

Трехместное выражение if/else

довольно короткая, но, тем не менее, занимает целых 4 строки. Специально для таких случаев и было придумано выражение if/else:
В данной инструкции интерпретатор выполнит выражение Y, если X истинно, в противном случае выполнится выражение Z.

Для вставки кода на Python в комментарий заключайте его в теги

  • Модуль csv - чтение и запись CSV файлов
  • Создаём сайт на Django, используя хорошие практики. Часть 1: создаём проект
  • Онлайн-обучение Python: сравнение популярных программ
  • Книги о Python
  • GUI (графический интерфейс пользователя)
  • Курсы Python
  • Модули
  • Новости мира Python
  • NumPy
  • Обработка данных
  • Основы программирования
  • Примеры программ
  • Типы данных в Python
  • Видео
  • Python для Web
  • Работа для Python-программистов
  • Сделай свой вклад в развитие сайта!
  • Самоучитель Python
  • Карта сайта
  • Отзывы на книги по Python
  • Реклама на сайте

Выбор варианта сценария в зависимости от ответа пользователя

Author24 — интернет-сервис помощи студентам

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

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
print ('Введите ваш пол,буква (м): ') p = str(input()); if p == 'м' : print ('Здарова мужик') elif p == 'ж' : print ('Приветствую вас девушка') else: print ('Ты кто такой ***?') print ('Как дела то?) (норм,плохо,отлично,супер,свой вариант)') k = str(input()); if k == 'норм' : println ('Норм так норм,эт стандарт))') elif k == 'плохо': print ('*** ну ты это,не расстраивайся,все еще наладиться,выше нос)) ') elif k == 'отлично': print ('Так держать') elif k == 'супер': print ('Так держать') else: print('эхх,выпьем? =) ') import time time.sleep (5)
Придерживайтесь норм общения умных, образованных и уважающих друг друга людей!

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Сделать выбор цвета в зависимости от ответа
Как сделать так, чтобы в коде после выбора правильного ответа цвет становился зелёным, а если ответ.

Запросить у пользователя ввести возраст и вывести сообщение в зависимости от ответа
Необходимо запросить у пользователя ввести возраст (метод prompt()). Вызывать функцию, которая.

Создать два варианта сценария для построения графика
Здравствуйте. Мне требуется построить два графика разными способами. На выходе они должны быть.

Создать два варианта сценария для построения, оформления и вывода графика
Здравствуйте, проблема с графиками: Создать два варианта сценария для построения, оформления и.

Создать два варианта сценария для построения, оформления и вывода графика
Здравствуйте! Посмотрел пример на форуме по созданию графика в матлабе! написал программу по.

Регистрация: 03.04.2015
Сообщений: 53
тему можно закрывать,разобрался.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
print ('Введите ваш пол,буква (м): ') p = str(input()); if p == 'м' : print ('Здарова мужик') print ('Как дела то?) (норм,плохо,отлично,супер,свой вариант)') k = str(input()); if k == 'норм' : println ('Норм так норм,эт стандарт))') elif k == 'плохо': print ('***,ну ты это,не расстраивайся,все еще наладится,выше нос)) ') elif k == 'отлично': print ('Так держать') elif k == 'супер': print ('Так держать') else: print('эхх,выпьем? =) ') elif p == 'ж' : print ('Приветствую вас девушка') print ('Как дела, сударыня?) (норм,плохо,отлично,супер,свой вариант)') k = str(input()); if k == 'норм' : print ('Норм так норм,эт стандарт для девушки))') elif k == 'плохо': print ('***,ну ты это,ъъъъъъ,не расстраивайся,все еще наладится,выше нос)) ') elif k == 'отлично': print ('Так держать, ъъъъъъ!') elif k == 'супер': print ('Так держать') else: print('эхх,выпьем? =) а потом ъъъъъъ ') else: print ('Ты кто такой ***, ******')

2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
def dialog(answer, question): inp = input(question) try: print(answer[inp.lower()]) except KeyError: print(answer['other']) sex = input('Введите ваш пол (м/ж): ') if sex == 'м': answer = { 'норм': 'Норм так норм,эт стандарт))', 'плохо': 'ну ты это,не расстраивайся,все еще наладится,выше нос))', 'отлично': 'Так держать', 'супер': 'Так держать', 'other': 'эхх,выпьем? =) ' } question = 'Здарова мужик\nКак дела то?) (норм,плохо,отлично,супер,свой ' \ 'вариант)' dialog(answer, question) elif sex == 'ж': answer = { 'норм': 'Норм так норм,эт стандарт для девушки))', 'плохо': 'ну ты это, не расстраивайся,все еще наладится,выше нос))', 'отлично': 'Так держать!', 'супер': 'Так держать', 'other': 'эхх,выпьем? =) ' } question = 'Приветствую вас девушка\nКак дела, сударыня?) (норм,плохо,' \ 'отлично,супер,свой вариант)' dialog(answer, question) else: print('Ты кто такой ?)

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Создать два варианта сценария для построения, оформления и вывода графика
Создать два варианта сценария для построения, оформления и вывода графика: Один вариант должен.

Создать два варианта сценария для построения, оформления и вывода графика
1. Один вариант должен использовать стандартный для обычных языков программирования подход с.

Выбрать 2 правильных варианта ответа
Собственно,помогите выбрать 2 правильных варианта ответ Правила форума: 5.18. Запрещено.

Добавление варианта ответа в голосовании
Здравствуйте! Решил я недавно голосовалку написать на php с использованием mysql. Появилась.

Задания с выбором варианта ответа
Подскажите, как мне сделать так чтобы в тесте были задания только с выбором варианта ответа? path.

Помогите со сценарием проверки варианта ответа.
Решил создать игру. Простенькую, но игру. Но столкнулся с проблемой. При нажатии на кнопку "Ответ.

Или воспользуйтесь поиском по форуму:

Команда if и функция input в Python

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

  • Команда if выполняет действие, если условие истинно (True), и не делает ничего если ложно (False)
  • Команда if-else выполняет действие, если условие истинно (True), или выполняет другое действие, если условие ложно (False)
  • Команда if-elif-else выполняет одно из нескольких возможных действий в зависимости от истинности или ложности нескольких условий.
Содержание страницы:
1.1. Проверка условий
1.2. Проверка нескольких условий
2. Функция input()
3.1. Команда if
3.2. Команда if-else
3.3. Команда if-elif-else
4. Команда if со списками

1. Проверка условий в Python.

Проверка равенств.

Регулярно в программах переменные сравниваются с другими переменными или значениями. Самое простое условия, это проверить равно ли значение переменной конкретному значению.

>>> car = 'audi'
>>> car == 'audi'
True

Присвоим переменной car значение 'audi'. Во второй строке проверим равно ли значение переменной car. Двойной знак равно ( == ) используется для проверки равенства. В итоге Python возвращает значение True , означающий что значения равны. В случае неравенства значений, возвращается False .

>>> car = 'audi'
>>> car == 'bmw'
False

В Python проверка равенства выполняется с учетом регистра. В случае написания значений с разным регистром, значения получаются не равными.

>>> car = 'audi'
>>> car == 'Audi'
False

Проверка неравенства.

Проверка неравенства происходит с помощью восклицательного знака и знака равно ( != ). Восклицательный знак представляет отрицание, как и во многих языках программирования.

>>> car = 'audi'
>>> car != 'bmw'
True

1.2. Проверка нескольких условий.

Использование and для проверки нескольких условий.

Для проверки нескольких условий одновременно, используйте ключевое слово and . Чтобы выражение было истинно (True) оба условия должны быть истинны. В примере проверим возраст людей, чтобы был младше или в возрасте 30 лет.

>>> age_1 = 29
>>> age_2 = 20
>>> age_1 True

Если оба условия выполнены, то возвращается True.

Использование or для проверки нескольких условий.

При использовании ключевого слова or , проверка будет истинна если выполнено хотя бы одно условие в выражение. Проверим теперь чтобы хотя бы один из людей был младше 25 лет.

>>> age_1 = 29
>>> age_2 = 20
>>> age_1 < 25 or age_2 < 25
True

2. Функция input() .

  • Функция input() запрашивает данные у пользователя и получает их. Получив данные, сохраняет их в переменной и в последующем вы можете работать с этой переменной.

>>> name = input ('Как вас зовут? ')
Как вас зовут? Ян # вводит пользователь
>>> print(name)
Ян

  • Функция input() всегда возвращает строку. Если мы захотим сложить два числа, то получим не верный ответ. Пример:

>>> a = input ('Введите число: ')
Введите число: 5
>>> b = input ('Введите число: ')
Введите число: 10
>>> a + b
'510'

Вместо того чтобы сложить 5 и 10 и в итоге получить 15, Python складывает строковое значения '5' и '10', и в итоге получает строку '510'. Это операция называется конкатенация строк. В результате создается новая строка из левого операнда, за которым следует правый.

  • Если вам требуется получить целое число, то преобразуйте строку в число с помощью функцииint () :

>>> a = int( input ('Введите число: '))
Введите число: 5
>>> b = int( input ('Введите число: '))
Введите число: 10
>>> a + b
15

  • Если вам требуется получить число с плавающей точкой, то используйте функцию float()

>>> a = float( input ('Введите число: '))
Введите число: 12.5
>>> b = float( input ('Введите число: '))
Введите число: 7.3
>>> a + b
19.8

3.1. Команда if .

Самая простая команда if состоит из одного условия и одного действия.

дествие # отступ в 4 пробела

Приведем пример программы, которая определяет платный ли вход в кинотеатр:

>>> age = 25
>>> if age >= 18 :
. print('Вход в кинотеатр для вас платный')
. print('Приобретите билет в кассе')
.
Вход в кинотеатр для вас платный
Приобретите билет в кассе

В первой строке команды if мы размещаем условия, а во второй строке кода с отступом - практически любое действие. В случае выполнения условия выполняется действие, если условие не выполнено, ничего не происходит.

3.2. Команда if-else .

В случае если необходимо выполнить другое действие если условие ложно, можно воспользоваться командой if-else . Блок if записывается так же, как и раньше, а после него записывается блок else с набором действий в случае невыполнения команды if .

>>> age = 17
>>> if age >= 18 :
. print('Вход в кинотеатр для вас платный')
. print('Приобретите билет в кассе')
. else:
. print('Для вас вход бесплатный')
.
Для вас вход бесплатный

Блок else записывается на уровне блока If , без 4 пробелов.

3.3. Команда if-elif-else .

Команда if-elif-else позволяет проверить сразу несколько условий. Предположим, стоимость билетов кинотеатр изменяется в зависимости от возврата посетителя.

>>> age = 35
>>> if age . print('Для вас вход бесплатный')
. elif age < 18 :
. print('Стоимость билета 500 руб')
. elif age . print('Стоимость билета 1000 руб')
. else:
. print('Для вас вход бесплатный')
.
Стоимость билета 1000 руб

Код выполняется последовательно, программа вначале проверяет соответствие возраста меньше или равно 7 лет, затем < 18 и т.д. Как только условия выполняются, Python выводит результат и действие программы прекращается. Важно ставить правильную последовательность условий. К примеру, если мы поставим условие младше или равно 60 в начало, то возраст меньше 7 и 18 не будет работать и программа сразу выдаст результат максимальной стоимости билета.

Наличие секции else в команде if-elif-else необязательно. Ее присутствие позволяет обработать результат, не удовлетворяющий никаким условиям.

4. Команда if со списками.

С помощью команды if , например при переборе списка, возможно использовать каждый элемент на свое усмотрение.

>>> cars = [ 'ford', 'opel', 'audi', 'land rover', 'bmw' ]
>>> for brand in cars:
. if brand == 'audi' :
. print(f"Гарантия на автомобиль 2 года")
. elif brand == 'bmw' :
. print(f"Гарантия на автомобиль 3 года")
. else:
. print(f"Гарантия на автомобиль 5 лет")
.
Гарантия на автомобиль Ford 5 лет
Гарантия на автомобиль Opel 5 лет
Гарантия на автомобиль Audi 2 года
Гарантия на автомобиль Land Rover 5 лет
Гарантия на автомобиль Bmw 3 года

В данном примере с помощью команды for мы перебираем весь список автомобилей. Если марка автомобиля соответствует условия if-elif , то выводится для этих марок свое сообщение по условиям гарантии. В случае не совпадения условий, выдается общее сообщение для всех остальных марок.

Множественное ветвление: if-elif-else. Оператор match в Python

Ранее мы рассмотрели работу условного оператора if . С помощью его расширенной версии if-else можно реализовать две отдельные ветви выполнения. Однако алгоритм программы может предполагать выбор больше, чем из двух путей, например, из трех, четырех или даже пяти. В данном случае следует говорить о необходимости множественного ветвления.

Рассмотрим конкретный пример. Допустим, в зависимости от возраста пользователя, ему рекомендуется определенный видеоконтент. При этом выделяют группы от 3 до 6 лет, от 6 до 12, от 12 до 16, 16+. Итого 4 диапазона. Как бы мы стали реализовывать задачу, имея в наборе инструментов только конструкцию if-else?

Самый простой ответ – последовательно проверять вхождение введенного числа-возраста в определенный диапазон с помощью следующих друг за другом условных операторов:

old = int(input('Ваш возраст: ')) print('Рекомендовано:', end=' ') if 3  old  6: print('"Заяц в лабиринте"') if 6  old  12: print('"Марсианин"') if 12  old  16: print('"Загадочный остров"') if 16  old: print('"Поток сознания"')

Примечание. Названия фильмов выводятся на экран в двойных кавычках. Поэтому в программе для определения строк используются одинарные.

Предложенный код прекрасно работает, но есть одно существенное "но". Он не эффективен, так как каждый if в нем – это отдельно взятый оператор, никак не связанный с другими if . Процессор тратит время и "нервы" на обработку каждого из них, даже если в этом уже нет необходимости. Например, введено число 10. В первом if логическое выражение возвращает ложь, и поток выполнения переходит ко второму if . Логическое выражение в его заголовке возвращает истину, и его тело выполняется. Всё, на этом программа должна была остановиться.

Однако следующий if никак не связан с предыдущим, поэтому далее будет проверяться вхождение значения переменной old в диапазон от 12 до 16, в чем необходимости нет. И далее будет обрабатываться логическое выражение в последнем if , хотя уже понятно, что и там будет False .

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

old = int(input('Ваш возраст: ')) print('Рекомендовано:', end=' ') if 3  old  6: print('"Заяц в лабиринте"') else: if 6  old  12: print('"Марсианин"') else: if 12  old  16: print('"Загадочный остров"') else: if 16  old: print('"Поток сознания"')

Рассмотрим поток выполнения этого варианта кода. Сначала проверяется условие в первом if (он же самый внешний). Если здесь было получено True , то тело этого if выполняется, а в ветку else мы даже не заходим, так как она срабатывает только тогда, когда в условии if возникает ложь.

Если внешний if вернул False , поток выполнения программы заходит в соответствующий ему внешний else . В его теле находится другой if со своим else . Если введенное число попадает в диапазон от 6 до 12, то выполнится тело вложенного if , после чего программа завершается. Если же число не попадает в диапазон от 6 до 12, то произойдет переход к ветке else . В ее теле находится свой условный оператор, имеющий уже третий уровень вложенности.

Теперь зададимся следующим вопросом. Можно ли как-то оптимизировать код множественного ветвления и не строить лестницу из вложенных друг в друга условных операторов? Во многих языках программирования, где отступы используются только для удобства чтения программистом, но не имеют никакого синтаксического значения, часто используется подобный стиль:

if логическое_выражение < … ; >else if логическое_выражение < … ; >else if логическое_выражение < … ; >else

Может показаться, что имеется только один уровень вложенности, и появляется новое расширение для if , выглядящее как else if . Но это только кажется. На самом деле if , стоящее сразу после else , является вложенным в это else . Выше приведенная схема – то же самое, что

if логическое_выражение < … ; >else if логическое_выражение < … ; >else if логическое_выражение < … ; >else

Именно так ее "понимает" интерпретатор или компилятор. Однако считается, что человеку проще воспринимать первый вариант.

В Питоне такое поднятие вложенного if к внешнему else невозможно, потому что здесь отступы и переходы на новую строку имеют синтаксическое значение. Поэтому в язык Python встроена возможность настоящего множественного ветвления на одном уровне вложенности, которое реализуется с помощью веток elif.

Слово "elif" образовано от двух первых букв слова "else", к которым присоединено слово "if". Это можно перевести как "иначе если".

В отличие от else , в заголовке elif обязательно должно быть логическое выражение также, как в заголовке if . Перепишем нашу программу, используя конструкцию множественного ветвления:

old = int(input('Ваш возраст: ')) print('Рекомендовано:', end=' ') if 3  old  6: print('"Заяц в лабиринте"') elif 6  old  12: print('"Марсианин"') elif 12  old  16: print('"Загадочный остров"') elif 16  old: print('"Поток сознания"')

Обратите внимание, в конце, после всех elif , может использоваться одна ветка else для обработки случаев, не попавших в условия ветки if и всех elif . Блок-схему полной конструкции if-elif-…-elif-else можно изобразить так:

Оператор множественного ветвления в Python

Как только тело if или какого-нибудь elif выполняется, программа сразу же возвращается в основную ветку (нижний ярко-голубой прямоугольник), а все нижеследующие elif , а также else пропускаются.

Оператор match-case в Python

Начиная с версии 3.10 в Питоне появился оператор match , который можно использовать как аналог оператора switch , который есть в других языках. На самом деле возможности match немного шире.

В match множественное ветвление организуется с помощью веток case :

match имя_переменной: case значение_1: действия case значение_2: действия …

Слова match-case можно перевести как "соответствовать случаю". То есть, если значение переменной или выражения при match соответствует значению при каком-либо case , то выполнятся действия, вложенные в этот case .

В отличие от if-elif здесь нельзя использовать логические выражения. После case должен находится литерал, конкретное значение, выражение, возвращающее однозначный результат.

Рассмотрим программу, в которой реализовать множественное ветвление с помощью match-case удобнее, чем через if-elif-else:

sign = input('Знак операции: ') a = int(input('Число 1: ')) b = int(input('Число 2: ')) match sign: case '+': print(a + b) case '-': print(a - b) case '/': if b != 0: print(round(a / b, 2)) case '*': print(a * b) case _: print('Неверный знак операции')

Здесь значение переменной sign проверяется не на вхождение в какой-либо диапазон, а на точное соответствие заданным строковым литералам. При этом в ветках case уже не надо писать sign == '+' или sign == '-' , как это пришлось бы делать в программе с if-elif:

if sign == '+': print(a + b) elif sign == '-': print(a - b) elif sign == '/': if b != 0: print(round(a / b, 2)) elif sign == '*': print(a * b) else: print('Неверный знак операции')

Код с match выглядит более ясным.

Оператор match языка Python не имеет ветки else . Вместо нее используется ветка case _ .

При одном case через оператор | можно перечислять несколько значений. Если значение переменной соответствует хотя бы одному из них, тело этого case выполнится.

sign = input('Знак операции: ') match sign: case '+' | '-' | '*': a = int(input('Число 1: ')) b = int(input('Число 2: ')) print(eval(f'  ')) case _: print('Неверный знак операции')

В коде выше с помощью функции eval() переданная ей строка выполняется как выражение. Например, если были введены числа 3, 5 и знак *, то получится строка "3 * 5" . Вызов eval("3 * 5") возвращает число 15.

Практическая работа

  1. Спишите вариант кода программы "про возраст" c if и тремя ветками elif из урока. Дополните его веткой else , обрабатывающие случаи, когда пользователь вводит числа не входящие в заданные четыре диапазона. Подумайте, почему в первой версии программы (когда использовались не связанные друг с другом условные операторы) нельзя было использовать else , а для обработки не входящих в диапазоны случаев пришлось бы писать еще один if ?
  2. Усовершенствуйте предыдущую программу, обработав исключение ValueError , возникающее, когда вводится не целое число.
  3. Напишите программу, которая запрашивает на ввод число. Если оно положительное, то на экран выводится цифра 1. Если число отрицательное, выводится -1. Если введенное число – это 0, то на экран выводится 0. Используйте в коде условный оператор множественного ветвления.

Примеры решения и дополнительные уроки в pdf-версии курса

X Скрыть Наверх

Python. Введение в программирование

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

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