Чем отличается if от else if
Перейти к содержимому

Чем отличается if от else if

  • автор:

Условное ветвление: if, ‘?’

Иногда нам нужно выполнить различные действия в зависимости от условий.

Для этого мы можем использовать инструкцию if и условный оператор ? , который также называют оператором «вопросительный знак».

Инструкция «if»

Инструкция if(. ) вычисляет условие в скобках и, если результат true , то выполняет блок кода.

let year = prompt('В каком году была опубликована спецификация ECMAScript-2015?', ''); if (year == 2015) alert( 'Вы правы!' );

В примере выше, условие – это простая проверка на равенство ( year == 2015 ), но оно может быть и гораздо более сложным.

Если мы хотим выполнить более одной инструкции, то нужно заключить блок кода в фигурные скобки:

if (year == 2015)

Мы рекомендуем использовать фигурные скобки <> всегда, когда вы используете инструкцию if , даже если выполняется только одна команда. Это улучшает читаемость кода.

Преобразование к логическому типу

Инструкция if (…) вычисляет выражение в скобках и преобразует результат к логическому типу.

Давайте вспомним правила преобразования типов из главы Преобразование типов:

  • Число 0 , пустая строка «» , null , undefined и NaN становятся false . Из-за этого их называют «ложными» («falsy») значениями.
  • Остальные значения становятся true , поэтому их называют «правдивыми» («truthy»).

Таким образом, код при таком условии никогда не выполнится:

if (0) < // 0 is falsy . >

…а при таком – выполнится всегда:

if (1) < // 1 is truthy . >

Мы также можем передать заранее вычисленное в переменной логическое значение в if , например так:

let condition = (year == 2015); // преобразуется к true или false if (condition)

Блок «else»

Инструкция if может содержать необязательный блок «else» («иначе»). Он выполняется, когда условие ложно.

let year = prompt('В каком году была опубликована спецификация ECMAScript-2015?', ''); if (year == 2015) < alert( 'Да вы знаток!' ); >else < alert( 'А вот и неправильно!' ); // любое значение, кроме 2015 >

Несколько условий: «else if»

Иногда нужно проверить несколько вариантов условия. Для этого используется блок else if .

let year = prompt('В каком году была опубликована спецификация ECMAScript-2015?', ''); if (year < 2015) < alert( 'Это слишком рано. ' ); >else if (year > 2015) < alert( 'Это поздновато' ); >else

В приведённом выше коде JavaScript сначала проверит year < 2015 . Если это неверно, он переходит к следующему условию year >2015 . Если оно тоже ложно, тогда сработает последний alert .

Блоков else if может быть и больше. Присутствие блока else не является обязательным.

Условный оператор „?“

Иногда нам нужно определить переменную в зависимости от условия.

let accessAllowed; let age = prompt('Сколько вам лет?', ''); if (age > 18) < accessAllowed = true; >else < accessAllowed = false; >alert(accessAllowed);

Так называемый «условный» оператор «вопросительный знак» позволяет нам сделать это более коротким и простым способом.

Оператор представлен знаком вопроса ? . Его также называют «тернарный», так как этот оператор, единственный в своём роде, имеет три аргумента.

let result = условие ? значение1 : значение2;

Сначала вычисляется условие : если оно истинно, тогда возвращается значение1 , в противном случае – значение2 .

let accessAllowed = (age > 18) ? true : false;

Технически, мы можем опустить круглые скобки вокруг age > 18 . Оператор вопросительного знака имеет низкий приоритет, поэтому он выполняется после сравнения > .

Этот пример будет делать то же самое, что и предыдущий:

// оператор сравнения "age > 18" выполняется первым в любом случае // (нет необходимости заключать его в скобки) let accessAllowed = age > 18 ? true : false;

Но скобки делают код более простым для восприятия, поэтому мы рекомендуем их использовать.

На заметку:

В примере выше вы можете избежать использования оператора вопросительного знака ? , т.к. сравнение само по себе уже возвращает true/false :

// то же самое let accessAllowed = age > 18;

Несколько операторов „?“

Последовательность операторов вопросительного знака ? позволяет вернуть значение, которое зависит от более чем одного условия.

let age = prompt('Возраст?', 18); let message = (age < 3) ? 'Здравствуй, малыш!' : (age < 18) ? 'Привет!' : (age < 100) ? 'Здравствуйте!' : 'Какой необычный возраст!'; alert( message );

Поначалу может быть сложно понять, что происходит. Но при ближайшем рассмотрении мы видим, что это обычная последовательная проверка:

  1. Первый знак вопроса проверяет age < 3 .
  2. Если верно – возвращает 'Здравствуй, малыш!' . В противном случае, проверяет выражение после двоеточия „:“, вычисляет age < 18 .
  3. Если это верно – возвращает 'Привет!' . В противном случае, проверяет выражение после следующего двоеточия „:“, вычисляет age < 100 .
  4. Если это верно – возвращает 'Здравствуйте!' . В противном случае, возвращает выражение после последнего двоеточия – 'Какой необычный возраст!' .

Вот как это выглядит при использовании if..else :

if (age < 3) < message = 'Здравствуй, малыш!'; >else if (age < 18) < message = 'Привет!'; >else if (age < 100) < message = 'Здравствуйте!'; >else

Нетрадиционное использование „?“

Иногда оператор «вопросительный знак» ? используется в качестве замены if :

let company = prompt('Какая компания создала JavaScript?', ''); (company == 'Netscape') ? alert('Верно!') : alert('Неправильно.');

В зависимости от условия company == 'Netscape' , будет выполнена либо первая, либо вторая часть после ? .

Здесь мы не присваиваем результат переменной. Вместо этого мы выполняем различный код в зависимости от условия.

Не рекомендуется использовать оператор вопросительного знака таким образом.

Несмотря на то, что такая запись короче, чем эквивалентная инструкция if , она хуже читается.

Вот, для сравнения, тот же код, использующий if :

let company = prompt('Какая компания создала JavaScript?', ''); if (company == 'Netscape') < alert('Верно!'); >else

При чтении глаза сканируют код по вертикали. Блоки кода, занимающие несколько строк, воспринимаются гораздо легче, чем длинный горизонтальный набор инструкций.

Смысл оператора «вопросительный знак» ? – вернуть то или иное значение, в зависимости от условия. Пожалуйста, используйте его именно для этого. Когда вам нужно выполнить разные ветви кода – используйте if .

Задачи

if (строка с нулём)

важность: 5

Выведется ли alert ?

if ("0")

Да, выведется.

Любая строка, кроме пустой (а строка "0" – не пустая), в логическом контексте становится true .

Можно запустить и проверить:

if ("0")

Название JavaScript

важность: 2

Используя конструкцию if..else , напишите код, который будет спрашивать: „Какое «официальное» название JavaScript?“

Если пользователь вводит «ECMAScript», то показать: «Верно!», в противном случае – отобразить: «Не знаете? ECMAScript!»

if/elif/else#

Конструкция if/elif/else позволяет делать ответвления в ходе программы. Программа уходит в ветку при выполнении определенного условия.

В этой конструкции только if является обязательным, elif и else опциональны:

  • Проверка if всегда идет первой.
  • После оператора if должно быть какое-то условие: если это условие выполняется (возвращает True), то действия в блоке if выполняются.
  • С помощью elif можно сделать несколько разветвлений, то есть, проверять входящие данные на разные условия.
  • Блок elif это тот же if, но только следующая проверка. Грубо говоря, это «а если …»
  • Блоков elif может быть много.
  • Блок else выполняется в том случае, если ни одно из условий if или elif не было истинным.
In [1]: a = 9 In [2]: if a == 10: . : print('a равно 10') . : elif a  10: . : print('a меньше 10') . : else: . : print('a больше 10') . : a меньше 10 

Условия#

Конструкция if построена на условиях: после if и elif всегда пишется условие. Блоки if/elif выполняются только когда условие возвращает True, поэтому первое с чем надо разобраться - это что является истинным, а что ложным в Python.

True и False#

В Python, кроме очевидных значений True и False, всем остальным объектам также соответствует ложное или истинное значение:

  • истинное значение:
    • любое ненулевое число
    • любая непустая строка
    • любой непустой объект
    • 0
    • None
    • пустая строка
    • пустой объект

    Например, так как пустой список это ложное значение, проверить, пустой ли список, можно таким образом:

    In [12]: list_to_test = [1, 2, 3] In [13]: if list_to_test: . : print("В списке есть объекты") . : В списке есть объекты 

    Тот же результат можно было бы получить несколько иначе:

    In [14]: if len(list_to_test) != 0: . : print("В списке есть объекты") . : В списке есть объекты 

    Операторы сравнения#

    Операторы сравнения, которые могут использоваться в условиях:

    In [3]: 5 > 6 Out[3]: False In [4]: 5 > 2 Out[4]: True In [5]: 5  2 Out[5]: False In [6]: 5 == 2 Out[6]: False In [7]: 5 == 5 Out[7]: True In [8]: 5 >= 5 Out[8]: True In [9]: 5  10 Out[9]: True In [10]: 8 != 10 Out[10]: True 

    Обратите внимание, что равенство проверяется двойным == .

    Пример использования операторов сравнения:

    In [1]: a = 9 In [2]: if a == 10: . : print('a равно 10') . : elif a  10: . : print('a меньше 10') . : else: . : print('a больше 10') . : a меньше 10 

    Оператор in#

    Оператор in позволяет выполнять проверку на наличие элемента в последовательности (например, элемента в списке или подстроки в строке):

    In [8]: 'Fast' in 'FastEthernet' Out[8]: True In [9]: 'Gigabit' in 'FastEthernet' Out[9]: False In [10]: vlan = [10, 20, 30, 40] In [11]: 10 in vlan Out[11]: True In [12]: 50 in vlan Out[12]: False 

    При использовании со словарями условие in выполняет проверку по ключам словаря:

    In [15]: r1 =  . : 'IOS': '15.4', . : 'IP': '10.255.0.1', . : 'hostname': 'london_r1', . : 'location': '21 New Globe Walk', . : 'model': '4451', . : 'vendor': 'Cisco'> In [16]: 'IOS' in r1 Out[16]: True In [17]: '4451' in r1 Out[17]: False 

    Операторы and, or, not#

    В условиях могут также использоваться логические операторы and , or , not :

    In [15]: r1 =  . : 'IOS': '15.4', . : 'IP': '10.255.0.1', . : 'hostname': 'london_r1', . : 'location': '21 New Globe Walk', . : 'model': '4451', . : 'vendor': 'Cisco'> In [18]: vlan = [10, 20, 30, 40] In [19]: 'IOS' in r1 and 10 in vlan Out[19]: True In [20]: '4451' in r1 and 10 in vlan Out[20]: False In [21]: '4451' in r1 or 10 in vlan Out[21]: True In [22]: not '4451' in r1 Out[22]: True In [23]: '4451' not in r1 Out[23]: True 
    Оператор and#

    В Python оператор and возвращает не булево значение, а значение одного из операндов.

    Если оба операнда являются истиной, результатом выражения будет последнее значение:

    In [24]: 'string1' and 'string2' Out[24]: 'string2' In [25]: 'string1' and 'string2' and 'string3' Out[25]: 'string3' 

    Если один из операторов является ложью, результатом выражения будет первое ложное значение:

    In [26]: '' and 'string1' Out[26]: '' In [27]: '' and [] and 'string1' Out[27]: '' 
    Оператор or#

    Оператор or , как и оператор and, возвращает значение одного из операндов.

    При оценке операндов возвращается первый истинный операнд:

    In [28]: '' or 'string1' Out[28]: 'string1' In [29]: '' or [] or 'string1' Out[29]: 'string1' In [30]: 'string1' or 'string2' Out[30]: 'string1' 

    Если все значения являются ложными, возвращается последнее значение:

    In [31]: '' or [] or <> Out[31]: <> 

    Важная особенность работы оператора or - операнды, которые находятся после истинного, не вычисляются:

    In [33]: '' or sorted([44, 1, 67]) Out[33]: [1, 44, 67] In [34]: '' or 'string1' or sorted([44, 1, 67]) Out[34]: 'string1' 

    Пример использования конструкции if/elif/else#

    Пример скрипта check_password.py, который проверяет длину пароля и есть ли в пароле имя пользователя:

    # -*- coding: utf-8 -*- username = input('Введите имя пользователя: ') password = input('Введите пароль: ') if len(password)  8: print('Пароль слишком короткий') elif username in password: print('Пароль содержит имя пользователя') else: print('Пароль для пользователя <> установлен'.format(username)) 
    $ python check_password.py Введите имя пользователя: nata Введите пароль: nata1234 Пароль содержит имя пользователя $ python check_password.py Введите имя пользователя: nata Введите пароль: 123nata123 Пароль содержит имя пользователя $ python check_password.py Введите имя пользователя: nata Введите пароль: 1234 Пароль слишком короткий $ python check_password.py Введите имя пользователя: nata Введите пароль: 123456789 Пароль для пользователя nata установлен

    Тернарное выражение (Ternary expression)#

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

    s = [1, 2, 3, 4] result = True if len(s) > 5 else False 

    Этим лучше не злоупотреблять, но в простых выражениях такая запись может быть полезной.

    Чем отличается if от else if

    (PHP 4, PHP 5, PHP 7, PHP 8)

    Конструкция elseif , как её имя и говорит есть сочетание if и else . Аналогично else , она расширяет оператор if для выполнения различных выражений в случае, когда условие начального оператора if эквивалентно false . Однако, в отличие от else , выполнение альтернативного выражения произойдёт только тогда, когда условие оператора elseif будет являться равным true . К примеру, следующий код может выводить a больше, чем b , a равно b или a меньше, чем b :

    if ( $a > $b ) echo "a больше, чем b" ;
    > elseif ( $a == $b ) echo "a равен b" ;
    > else echo "a меньше, чем b" ;
    >
    ?>

    Может быть несколько elseif в одном выражении if . Первое выражение elseif (если оно есть) равное true будет выполнено. В PHP вы также можете написать else if (в два слова), и тогда поведение будет идентичным elseif ' (в одно слово). Синтаксически значение немного отличается (то же поведение, что и у C), но в конечном итоге оба выражения приведут к одному и тому же результату.

    Выражение elseif выполнится, если предшествующее выражение if и предшествующие выражения elseif эквивалентны false , а текущий elseif равен true .

    Замечание: Заметьте, что elseif и else if будут равнозначны только при использовании фигурных скобок, как в примерах выше. Если используются синтаксис с двоеточием для определения условий if / elseif , возникает необходимость использования elseif в одном слове. Если разбить else if на два слова, PHP выдаст ошибку разбора.

    /* Некорректный способ: */
    if( $a > $b ):
    echo $a . " больше, чем " . $b ;
    else if( $a == $b ): // Не скомпилируется.
    echo "Строка выше вызывает фатальную ошибку." ;
    endif;

    /* Корректный способ: */
    if( $a > $b ):
    echo $a . " больше, чем " . $b ;
    elseif( $a == $b ): // Заметьте, тут одно слово.
    echo $a . " равно " . $b ;
    else:
    echo $a . " не больше и не равно " . $b ;
    endif;

    JavaScript Операторы if. else

    Условные операторы используются для выполнения разных действий в зависимости от разных условий.

    Условные операторы

    Очень часто, когда вы пишете код, вы хотите выполнять разные действия для разных решений.

    Вы можете использовать условные операторы в своем коде, чтобы сделать это.

    В JavaScript есть следующие условные выражения:

    • Используйте if , чтобы указать блок кода, который нужно выполнить, если указанное условие true (истинно)
    • Используйте else , чтобы указать блок кода, который будет выполнен, если то же условие false (ложно)
    • Используйте else if , чтобы указать новое условие для проверки, если первое условие false (ложно)
    • Используйте switch , чтобы указать много альтернативных блоков кода, которые должны быть выполнены

    Оператор switch описывается в следующей главе этого учебника.

    Оператор if

    Используйте if заявление, чтобы указать блок кода JavaScript, который будет выполняться, если условие истинно.

    Синтаксис

    if (condition) // блок кода, который должен быть выполнен, если условие истинно
    >

    Обратите внимание, что if это строчные буквы. Заглавные буквы (If или IF) приведут к ошибке JavaScript.

    Пример

    Сделайте приветствие "Добрый день", если час меньше 18:00:

    if (hour < 18) <
    greeting = "Добрый день";
    >

    Результатом приветствия будет:

    Оператор else

    Используйте else оператор, чтобы указать блок кода, который будет выполняться, если условие ложно.

    if (condition) // блок кода, который будет выполнен, если условие истинно
    > else <
    // блок кода, который будет выполнен, если условие ложно
    >

    Пример

    Если час меньше 18, создайте приветствие "Добрый день", в противном случае "Добрый вечер":

    if (hour < 18) <
    greeting = "Добрый день";
    > else <
    greeting = "Добрый вечер";
    >

    Результатом приветствия будет:

    Оператор else if

    Используйте else if оператор, чтобы указать новое условие, если первое условие ложно.

    Синтаксис

    if (condition1) // блок кода, который должен быть выполнен, если условие1 истинно
    > else if (condition2) // блок кода, который должен быть выполнен, если условие1 ложно, а условие2 истинно
    > else // блок кода выполниться, если условие1 ложно, и условие2 тоже ложно
    >

    Пример

    Если время меньше 10:00, создайте приветствие "Доброе утро", если нет, но время меньше 20:00, создайте приветствие "Добрый день", в противном случае - "Добрый вечер":

    if (time < 10) <
    greeting = "Доброе утро";
    > else if (time < 20) <
    greeting = "Добрый день";
    > else <
    greeting = "Добрый вечер";
    >

    Результатом приветствия будет:

    Больше примеров

    Случайная ссылка
    В этом примере будет указана ссылка либо на Schoolsw3, либо на Всемирный фонд дикой природы (WWF). При использовании случайного числа вероятность каждой ссылки составляет 50%.

    Мы только что запустили
    SchoolsW3 видео

    ВЫБОР ЦВЕТА

    colorpicker

    курс сегодня!

    Сообщить об ошибке

    Если вы хотите сообщить об ошибке или внести предложение, не стесняйтесь отправлять на электронное письмо:

    Ваше предложение:

    Спасибо Вам за то, что помогаете!

    Ваше сообщение было отправлено в SchoolsW3.

    ТОП Учебники
    ТОП Справочники
    ТОП Примеры
    Получить сертификат

    SchoolsW3 оптимизирован для бесплатного обучения, проверки и подготовки знаний. Примеры в редакторе упрощают и улучшают чтение и базовое понимание. Учебники, ссылки, примеры постоянно пересматриваются, чтобы избежать ошибок, но не возможно гарантировать полную правильность всего содержания. Некоторые страницы сайта могут быть не переведены на РУССКИЙ язык, можно отправить страницу как ошибку, так же можете самостоятельно заняться переводом. Используя данный сайт, вы соглашаетесь прочитать и принять Условия к использованию, Cookies и политика конфиденциальности.

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

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