|
Логические связки, или логические операции — это символические конструкции логических языков (см. Язык формализованный), используемые для образования сложных высказываний (формул) из элементарных высказываний (см. Высказывание). Логическими связками называют также соответствующие этим символам союзы естественного языка (см. Язык). Обычно используются пять общеизвестных логических связок:
Из указанных логических связок отрицание называется одноместной (унарной) связкой; другие называются двухместными (бинарными) связками. В принципе, логические связки могут быть сколь угодно местными, но на практике более, чем бинарные, используются очень редко. В Классическая логика рассматривает логические связки экстенсионально (игнорируя содержательный смысл связываемых ими высказываний) как функции истинности, определяемые истинностными значениями связываемых ими высказываний. При двух имеющих место в этой логике истинностных значениях 1 (истинно) и 0 (ложно) высказывания Из четырёх одноместных функций интерес представляет только отрицание, меняющее значение высказывания на противоположное: когда A — истинно, ¬ A — ложно, и наоборот. Все другие унарные и бинарные классические функции могут быть выражены через представленные. Когда принятая в соответствующей семантике система логических связок позволяет дать определение всех остальных, её называют функционально полной. К полным системам в классической логике относятся, в частности, конъюнкция и отрицание; дизъюнкция и отрицание; импликация и отрицание. Конъюнкция и дизъюнкция определимы друг через друга за счёт эквивалентностей ( Функции антидизъюнкция и антиконъюнкция, определимые соответственно как ¬ (A ∨ B) и ¬ (A & B), также представляют каждая в отдельности функционально полную систему связок. Это последнее обстоятельство было известно уже Ч. С. Пирсу (неопубликованная при его жизни работа 1880 года) и было переоткрыто X. Шеффером. Используя антидизъюнкцию как единственную логическую связку, Шеффер в 1913 построил полное исчисление высказываний. Антидизъюнкцию обозначают A∣B и называют штрихом Шеффера, читая данное выражение, как «не-A и не-B». Ж. Нико употребил то же обозначение для антиконъюнкции («Неверно, что одновременно Экстенсиональность логических связок придаёт им однозначность, упрощает проблему построения логических исчислений, даёт возможность решать для последних метатеоретические проблемы непротиворечивости, разрешимости, полноты. Однако в некоторых случаях истинностно-функциональная трактовка связок приводит к значительному несоответствию с тем, как они понимаются в естественном языке. Так, указанная истинностная интерпретация импликации вынуждает признавать верными предложения вида «Если |
ЛОГИЧЕСКИЕ ОПЕРАЦИИ • Большая российская энциклопедия
ЛОГИ́ЧЕСКИЕ ОПЕРА́ЦИИ, способы построения сложного высказывания из данных высказываний, при которых истинностное значение сложного высказывания [оно может принимать одно из двух значений – «истина» (И) или «ложь» (Л)] полностью определяется истинностными значениями исходных высказываний. Примерами Л. о. являются дизъюнкция, конъюнкция, импликация, отрицание, а также кванторы.
Дизъюнкцией называется Л. о., заключающаяся в соединении данных высказываний $A$ и $B$ в новое высказывание «$A$ или $B$». В формализованных языках дизъюнкция высказываний $A$ и $B$ обозначается $A\!∨\!B$ (читается: «$A$ или $B$», «имеет место $A$ или имеет место $B$»), $A$ и $B$ называются дизъюнктивными членами высказывания $A\!∨\!B$, ∨ – знаком дизъюнкции. В обычной речи возможны два понимания союза «или»: в исключающем и неисключающем смысле. При первом понимании высказывание «$A$ или $B$» означает, что истинно ровно одно из двух высказываний $A$ и $B$, при втором – что истинно хотя бы одно из них. В математич. логике термин «дизъюнкция» относится к истолкованию союза «или» во втором смысле. Такому употреблению дизъюнкции соответствует т. н. истинностная таблица
$A$ | $B$ | $A \vee B$ |
И | И | И |
И | Л | И |
Л | И | И |
Л | Л | Л |
Конъюнкцией называется Л. о., заключающаяся в соединении двух данных высказываний $A$ и $B$ в новое высказывание «$A$ и $B$». В формализованных языках конъюнкция высказываний $A$ и $B$ обозначается $A$&$B$ (а также $A\!∧\!B$, $A\!·\!B$, $AB$, читается: «$A$ и $B$», «имеет место $A$ и имеет место $B$»), $A$ и $B$ называются конъюнктивными членами высказывания $A$&$B$, & – знаком конъюнкции. Употреблению конъюнкции в математич. логике соответствует истинностная таблица
$A$ | $B$ | $A$ & $B$ |
И | И | И |
И | Л | Л |
Л | И | Л |
Л | Л | Л |
Из таблицы видно, что высказывание $A$ & $B$ истинно только при истинности обоих высказываний $A$ и $B$.
Импликацией называется Л. о., заключающаяся в соединении данных высказываний $A$ и $B$ в новое высказывание «если $A$, то $B$». В формализованных языках импликация высказываний $A$ и $B$ обозначается $A\Rightarrow B$ [а также $A→B, A⊃B$, читается: «если $A$, то $B$», «$A$ влечёт (имплицирует) $B$»]. Высказывание $A$ называется посылкой высказывания $A\Rightarrow B$, а высказывание $B$ – его заключением. В обычной речи утверждение «если $A$, то $B$», как правило, предполагает наличие причинной связи между тем, что утверждается в высказывании $A$, и тем, что утверждается в высказывании $B$, и его истинность зависит от смысла этих высказываний. В математич. логике обычно учитывается лишь истинность или ложность высказываний, а не смысл. Поэтому импликация обычно понимается в соответствии с истинностной таблицей
$A$ | $B$ | $A ⇒ B$ |
И | И | И |
И | Л | Л |
Л | И | И |
Л | Л | И |
Из таблицы видно, что высказывание $A\Rightarrow B$ считается ложным лишь в том случае, когда его посылка истинна, а заключение ложно. При таком понимании оказываются истинными, напр., такие высказывания: «$2+2= 4 \Rightarrow \text{sin}\frac{\pi}2=1$», «$2 > 3 \Rightarrow4$ – простое число».
Отрицанием называется Л. о., в результате которой из данного высказывания $A$ получается новое высказывание «не $A$». В формализованных языках высказывание, получающееся в результате отрицания высказывания $A$, обозначается ¬$A$ (а также , $\bar{A}$, $A′$, читается: «не $A$», «неверно, что $A$», «$A$ не имеет места»). Отрицание в математич. логике задаётся истинностной таблицей
См. также Алгебра логики.
Логические операции | Базовые логические операции
Операций конъюнкция, дизъюнкция и инверсия достаточно для того, чтобы с их помощью можно было записать любую произвольную логическую операцию. Поэтому эти операции называют базовыми, основными.
В алгебре логики логическая операция полностью задается таблицей истинности, указывающей, какие значения принимает сложное высказывание при всех возможных значениях простых высказываний, входящих в сложное высказывание.
Введем формальным образом логические операции, соответствующие логическим связкам.
Конъюнкция
Высказывание, составленное из двух высказываний путем объединения их связкой «и» называется конъюнкцией.
Например, пусть есть два высказывания: А – «Число 22 четное», В – «Число 22 двузначное», тогда высказывание А и В (формально, F = А ∧ В): «Число 22 четное и двузначное».
Определение. Логическая операция, ставящая в соответствие двум высказываниям новое, являющееся истинным тогда и только тогда, когда оба исходных высказывания истинны, называется конъюнкцией.
Логическая операция конъюнкция задается следующей таблицей истинности:
A | B | F = A ∧ B |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
Дизъюнкция
Высказывание, составленное из двух высказываний путем объединения их связкой «или» называется дизъюнкцией.
Например, пусть есть два высказывания: А – «Колумб был на Ямайке», В – «Колумб был на Гаити», тогда высказывание А или В (Формально, F = А ∨ В): «Колумб был на Ямайке или на Гаити».
Определение. Логическая операция, ставящая в соответствие двум высказываниям новое, являющееся ложным тогда и только тогда, когда оба исходных высказывания ложны, называется дизъюнкцией.
Логическая операция дизъюнкция задается следующей таблицей истинности:
A | B | F = A ∨ B |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
Инверсия
Высказывание, образованное путем добавления связки «не» к простому высказыванию, называется инверсией (отрицанием).
В русском языке для образования отрицания может также использоваться связка «неверно, что».
Например, пусть высказывание А – «Число 22 простое», тогда высказывание «не» А (формально, F = ¬ A): «Неверно, что число простое»
Определение. Логическая операция, которая каждому высказыванию ставит в соответствие новое высказывание, значение которого противоположно исходному, называется отрицанием.
Логическая операция инверсия задается следующей таблицей истинности:
Информатик БУ — Основы логики. Логические операции.
В математической логике операцией называется логическая связь между двумя высказываниями. Высказывание – это некое суждение, которое, как правило, может быть либо истинным, либо ложным. При этом ложью считается логический ноль (0), а истиной – логическая единица (1).
В алгебре логики существует пять основных операций: конъюнкция, дизъюнкция, импликация, эквиваленция и отрицание. Рассмотрим каждую из них.
Конъюнкция
Конъюнкция – это логическое умножение. Также принято называть её логическим «И». Обычно записывается в виде символов:
&, *, ˄
Приведем пример.
Чтобы поступить в вуз, нужно сдать ЕГЭ по русскому языку и математике. В данном случае, «сдать русский язык» и «сдать математику» — логические высказывания, а поступление в вуз – результат выражения. Обозначим высказывание «сдать русский язык» переменной А, высказывание «сдать математику» переменной Б, а результат выражения (т. е. поступление в вуз) переменной F:
A ˄ B = F
Таблица истинности для этого выражения будет выглядеть так:
A | B | F |
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
То есть, чтобы результат (поступление) был истинный (равен 1), обе переменные, связанные логическим умножением, должны быть истинны. Проще говоря, если вы, к примеру, сдадите математику, но завалите русский, вы никуда не поступите (результатом будет ложь).
Таким образом, конъюнкция истинна только в одном случае – когда обе переменные истинны.
Дизъюнкция
Дизъюнкция – это логическое сложение. Также принято называть её логическим «ИЛИ». Записывается в виде символов:
|, +, ˅
Приведем пример.
Чтобы поймать рыбу, рыбаку нужна перловка ИЛИ хлеб. В этом случае «есть перловка» и «есть хлеб» — логические высказывания, а результатом выражения может быть пойманная рыба. Обозначим высказывание «есть перловка» переменной А, а высказывание «есть хлеб» переменной B. Результат выражения – «рыба поймана» — переменной F.
А ˅ B = F
Таблица истинности для этого выражения будет выглядеть так:
A | B | F |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
Проще говоря, чтобы результат («рыба поймана») был истинный, рыбак может взять с собой или перловку, или хлеб, или и то, и другое. Но если он забудет взять наживку – рыбу он не поймает, то есть результатом выражения будет ложь.
Таким образом, конъюнкция ложна только в одном случае – когда обе переменные ложны.
Импликация
Импликация – это логическое следование. Импликацию можно сравнить с о связкой «если…то». Записывается в виде горизонтальной стрелки, направленной вправо (→).
Импликацию можно обозначить как связь начальника и исполнителя. Приведём пример.
Предположим, учитель задал ученику задание. В этом случае «учитель задал» и «ученик сделал» — высказывания, а оценка будет являться результатом выражения. Обозначим высказывание «учитель задал» переменной A, высказывание «ученик сделал» — переменной B, а результат выражения (оценку) – переменной F.
A → B = F
Таблица истинности для этого выражения выглядит так:
A | B | F |
0 | 0 | 1 |
0 | 1 | 1 |
1 | 0 | 0 |
1 | 1 | 1 |
Если учитель ничего не задал, и ученик ничего не сделал – учитель двойку не поставит. Если учитель не задал, а ученик сделал – двойки также не будет. Если учитель задал, и ученик выполнил – оценка будет положительной. Но если учитель задал, а ученик не сделал – оценка будет отрицательной.
Проще говоря, импликация ложна только в одном случае: если первое выражение истинно, а второе – ложно.
Эквиваленция
Эквиваленция – это логическое равенство (тождество) Обозначается «тройным» знаком равенства (≡). Результатом эквиваленции может быть истина только в том случае, если оба выражения, связанные эквиваленцией, равнозначны (эквивалентны).
Таблица истинности для выражения A≡B выглядит так:
A | B | F |
0 | 0 | 1 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
Инверсия
Инверсия – это логическое отрицание. Её также называют логическим «НЕ». Записывается в виде символов:
!, ¬,
а также верхним подчеркиванием переменной.
Инверсия меняет значение переменной на противоположное, то есть:
сложные логические выражения в 1С
Внимание! Перед вами ознакомительная версия урока, материалы которого могут быть неполными.
Войдите на сайт как ученик
Войдите как ученик, чтобы получить доступ к материалам школы
Внутренний язык программирования 1С 8.3 для начинающих программистов: сложные логические выражения в 1САвтор уроков и преподаватель школы: Владимир Милькин
На прошлом уроке мы познакомились с логическим типом данных, который может принимать одно из двух значений Истина или Ложь. Также мы узнали о существовании простейших логических выражений. Они состоят из двух данных (число, строка или дата) и операции сравнения между ними. Результатом логического выражения является Истина или Ложь.
Вы думали самое сложное позади? Как бы не так! Сегодня вам придется сделать ещё один огромный шаг вперед на пути к профессии программиста. И называется этот шаг Сложные логические выражения.
Наберитесь сил, читайте, вчитывайтесь, перечитывайте. Не отчаивайтесь, если что-то не будет ясно с первого раза. Удивительно как раз, если сразу поймёте всё. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь. И как всегда тщательно выполняйте задания и задавайте вопросы.
Ещё скажу, что сразу после изучения этого урока, начнутся настоящие чудеса программирования!
Сложные логические выраженияОказывается из простых логических выражений, изученных нами на прошлом уроке можно составлять сложные логические выражения.
Для этого существуют специальные логические операции: И, Или, Не.
Правила работы логической операции И
А (левая часть) | Б (правая часть) | А И Б | Пример |
---|---|---|---|
Истина | Истина | Истина | (2 < 3) И (10 = 10) |
Истина | Ложь | Ложь | (2 < 3) И (10 <> 10) |
Ложь | Истина | Ложь | (10 <> 10) И (2 < 3) |
Ложь | Ложь | Ложь | (1 = 2) И (3 = 5) |
Таким образом, логическое выражение, составленное при помощи операции И, верно тогда и только тогда, когда верны оба выражения, стоящие слева и справа от этой операции.
Для лучшего понимания представьте, что значение Истина это 1, Ложь это 0, а логическая операция И это умножение:
А (левая часть) | Б (правая часть) | А И Б |
---|---|---|
1 | 1 | 1 |
1 | 0 | 0 |
0 | 1 | 0 |
0 | 0 | 0 |
Правила работы логической операции Или
А (левая часть) | Б (правая часть) | А Или Б | Пример |
---|---|---|---|
Истина | Истина | Истина | (2 < 3) Или (10 = 10) |
Истина | Ложь | Истина | (2 < 3) Или (10 <> 10) |
Ложь | Истина | Истина | (10 <> 10) Или (2 < 3) |
Ложь | Ложь | Ложь | (1 = 2) Или (3 = 5) |
Таким образом, логическое выражение, составленное при помощи операции Или, истинно, если верно хотя бы одно из выражений, стоящих слева и справа от этой операции. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь.
Для лучшего понимания представьте, что значение Истина это 1, Ложь это 0, а логическая операция Или это сложение:
А (левая часть) | Б (правая часть) | А Или Б |
---|---|---|
1 | 1 | 1 |
1 | 0 | 1 |
0 | 1 | 1 |
0 | 0 | 0 |
Правила работы логической операции Не
А | Не А | Пример |
---|---|---|
Истина | Ложь | Не (2 < 3) |
Ложь | Истина | Не (10 = 5) |
Таким образом, логическое выражение, составленное при помощи операции Не, верно, тогда и только тогда, когда неверно выражение, стоящее справа от этой операции. Операцию Не ещё называют логическим отрицанием.
Для лучшего понимания представьте, что значение Истина это 1, а Ложь это 0:
Задание №16. Вычислите (пока без помощи компьютера) результат следующих логических выражений.
- (1 = 1) И (2 = 2)
- Не (10 > 5)
- («Солнце» = «Луна») Или («Юпитер» = «Юпитер»)
- Не («Солнце» = «Луна»)
- (10 <> 5) Или (5 = 5)
- (Истина) Или (Ложь)
- Не (Истина)
- (Ложь) И (Истина)
- (Ложь) Или (Истина)
Попытайтесь выполнить всё сами и только потом смотрите ответы ниже.
Ответы
- (1 = 1) И (2 = 2)
Давайте упростим:
1 = 1, это Истина
2 = 2, это Истина
значит (1 = 1) И (2 = 2) равнозначно (Истина) И (Истина),
а «Истина И Истина«, как мы знаем из правил для операции И, равно Истина. Не (10 > 5)
Упрощаем:
10 > 5, это Истина
значит Не (10 >5) равнозначно Не (Истина),
а «Не Истина«, как мы знаем из правил для операции Не, равно Ложь.- («Солнце» = «Луна») Или («Юпитер» = «Юпитер»)
Упрощаем:
«Солнце» = «Луна», это Ложь
«Юпитер» = «Юпитер», это Истина
значит («Солнце» = «Луна») Или («Юпитер» = «Юпитер») равнозначно (Ложь) Или (Истина)
а «Ложь Или Истина«, как мы знаем из правил для операции Или, равно Истина. - Не («Солнце» = «Луна»)
Упрощаем:
«Солнце» = «Луна», это Ложь
значит Не («Солнце» = «Луна») равнозначно Не (Ложь)
а «Не Ложь«, как мы знаем из правил для операции Не, равно Истина. - (10 <> 5) Или (5 = 5)
Упрощаем:
10 <> 5, это Истина
5 = 5, это Истина
значит (10 <> 5) Или (5 = 5) равнозначно (Истина) Или (Истина)
а «Истина Или Истина«, как мы знаем из правил для операции Или, равно Истина. - (Истина) Или (Ложь)
Выражение уже упрощено.
«Истина Или Ложь» дают, в соответствии с правилами для операции Или, Истину. Не (Истина)Выражение уже упрощено.
«Не Истина» дают, в соответствии с правилами для операции Не, Ложь.(Ложь) И (Истина)Выражение уже упрощено.
«Ложь И Истина» дают, в соответствии с правилами для операции И, Ложь.- (Ложь) Или (Истина)
Выражение уже упрощено.
«Ложь Или Истина» дают, в соответствии с правилами для операции Или, Истина.
Задание №17. Вычислите все примеры логических выражений из предыдущего задания на компьютере.
Логические операции и сложные высказывания. (ОГЭ-02)
Логические операции и сложные высказывания. (ОГЭ-02)Теория:Высказывание – предложение, записанное в повествовательной форме, на которое можно однозначно ответить истинно оно или ложно.
Простые высказывания обозначаются латинскими буквами, как правило заглавными. Они обретают значения и обозначаются:
Сложное высказывание состоит из простых высказываний соединенных между собой логическими операциями. Сложное высказываение обозначается заглавной латинской буквой F.
В средней школе рассматриваются логические операции:
- Инверсия (отрицание): НЕ, ¬
- Конъюнкция (логическое умножение): И, ∧, &
- Дизъюнкция (логическое сложение): ИЛИ, ∨, |
Основываясь на таблицах истинности мы можем выделить важное свойство для логических операций:
- для дизъюнкции – если хотя бы одно простое высказывание истинно, то сложное высказывание F истинно
- для конъюнкции – если хотя бы одно простое высказывание ложно, то сложное высказывание F ложно
При этом логические операции подчиняются математическим законам и имеют следующий порядок действия при их совместном применении:
- Инверсия (отрицание)
- Конъюнкция (умножение)
- Дизъюнкция (сложение)
Действие в скобках выполняется раньше остальных.
Задача с двумя высказываниями
Для какого из приведённых имён истинно высказывание:
НЕ(Первая буква гласная) И (Количество букв > 5)?
- Иван
- Николай
- Семён
- Илларион
На первом этапе обозначим простые высказывания А и B, промежуточное сложное высказывание F1 и искомое сложное высказывание F. Затем составим таблицу истинности для высказываний А и B на основе входных данных.
Задача с тремя высказываниями
Таблицы истинности лучше всего подходят для решения задачи с тремя и более промежуточными сложными высказываниями.
[WpProQuiz 19] [wp_ad_camp_1]Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
0 0 Голосов
Рейтинг публикации
Полное руководство по логическим операторам в R | by Linda Ngo
Логические операторы позволяют нам изменять или сравнивать результаты сравнений, выполненных с использованием операторов отношения. Узнайте все, что вам нужно знать о них!
Предположим, мы хотим изменить или сравнить результаты сравнений, выполненных с использованием операторов отношения. Как бы мы это сделали?
R делает это с помощью операторов AND , OR и NOT .
Логические операторы
- Оператор И
и
- Оператор ИЛИ
|
- НЕ оператор
!
Оператор AND принимает два логических значения и возвращает TRUE
, только если оба значения сами равны TRUE
.Это означает, что TRUE & TRUE
оценивается как TRUE
, но что FALSE & TRUE
, TRUE & FALSE
и FALSE & FALSE
оценивается как FALSE
.
Вместо использования логических значений мы можем использовать результаты сравнений. Предположим, у нас есть переменная x
, равная 12. Чтобы проверить, больше ли эта переменная 5, но меньше 15, мы можем использовать x
больше 5 и x
меньше 15.
x <- 12
x> 5 & x <15
Первая часть, x> 5
будет оценивать как ИСТИНА
, так как 12 больше 5. Вторая часть, x <15
также будет оценивать на ИСТИНА
, поскольку 12 также меньше 15. Таким образом, результатом этого выражения будет ИСТИНА
, поскольку ИСТИНА и ИСТИНА
равно ИСТИНА
. Это имеет смысл, потому что 12 находится между 5 и 15.
Однако, если бы x
было 17, выражение x> 5 & x <15
упростилось бы до ИСТИНА и ЛОЖЬ
, что приводит к выражению ЛОЖЬ
.
Для вас
Рассмотрим следующий вектор и переменную:
linkedin <- c (16, 9, 13, 5, 2, 17, 14)
last <- tail (linkedin, 1)
The Вектор linkedin
представляет количество просмотров вашего профиля LinekdIn за последние семь дней. Переменная last
представляет последнее значение вектора linkedin
.
Определите, находится ли последняя переменная
между 15 и 20, исключая 15, но включая 20.
Решение
# Мы ищем R-эквивалент 15Последняя переменная linkedin - 14, что не находится между 15 и 20.last> 15 & last <= 20
Для вас try (2)
Рассмотрим следующие векторы:
linkedin <- c (16, 9, 13, 5, 2, 17, 14)
facebook <- c (17, 7, 5, 16, 8, 13, 14)
Вектор linkedin
представляет просмотры в вашем профиле LinkedIn за последние 7 дней, а вектор facebook
представляет просмотры в вашем профиле Facebook за последние 7 дней.
Определите, когда просмотры LinkedIn превысили 10 и просмотров Facebook не смогли достичь 10 за определенный день. Используйте векторы linkedin
и facebook
.
Решение
# linkedin превышает 10, но facebook ниже 10Только на третий день количество просмотров в LinkedIn было больше 10, а в Facebook меньше 10.
linkedin> 10 & facebook <10
Для вас (3)
Рассмотрим следующую матрицу:
views <- matrix (c (linkedin, facebook), nrow = 2, byrow = TRUE)
Переменная linkedin
и facebook
соответствует тем же векторам в предыдущем для вас пытаться.
Матрица просмотров
имеет первую и вторую строки, соответствующие векторам linkedin
и facebook
соответственно.
Определите, когда матрица просмотров
равна числу от 11 до 14, исключая 11 и включая 14.
Решение
# Когда просмотры находятся между 11 (исключая) и 14 (включительно)?В третий и последний день количество просмотров в LinkedIn составляло от 11 (исключая) до 14 (включительно).В шестой и последний день количество просмотров в Facebook было от 11 (исключая) до 14 (включительно).
просмотров> 11 & просмотров <= 14
Оператор ИЛИ (|) работает аналогично, но с той разницей, что только по крайней мере одно из логических значений должно быть равно ИСТИНА
, чтобы вся операция ИЛИ оценивалась как ИСТИНА
.
Это означает, что ИСТИНА | ИСТИНА
равно ИСТИНА
, но также ИСТИНА | ЛОЖЬ
и ЛОЖЬ | ИСТИНА
оценивается как ИСТИНА
. Когда оба логических логических значения FALSE
в операции ИЛИ, поэтому в случае FALSE | ЛОЖЬ
, результат ЛОЖЬ
.Помните, что операция OR не является исключительной операцией или or, поэтому TRUE | ИСТИНА
также равно ИСТИНА
.
С оператором AND только TRUE & TRUE
дает TRUE
, все остальное - FALSE
. С оператором OR только FALSE | ЛОЖЬ
делает ЛОЖЬ
, все остальное - ИСТИНА
.
Как и для операций И, мы можем использовать сравнения вместе с оператором ИЛИ. Предположим, у нас есть переменная y
, равная 4.Чтобы узнать, меньше ли эта переменная 5 или больше 15, мы можем использовать следующее выражение:
y <- 4
y <5 | y> 15
R сначала выполнит сравнения, в результате чего TRUE | ЛОЖЬ
, что, в свою очередь, приводит к ИСТИНА
.
Теперь предположим, что y
равно 14. Выражение y <5 | y> 15
теперь принимает значение FALSE | ЛОЖЬ
. Ни одно из сравнений не дает ИСТИНА
, поэтому результат ЛОЖЬ
.
Для вас
Используя те же переменные из последнего, что вы можете попробовать, определите, находится ли last
меньше 5 или больше 10.
linkedin <- c (16, 9, 13, 5, 2, 17 , 14)
last <- tail (linkedin, 1)
Solution
# Последний младше 5 или старше 10?Последний элемент linkedin - 14, и хотя он меньше 5, он больше 10, что делает выражение истинным.
последняя <5 | last> 10
Для вас (2)
Рассмотрим те же векторы linkedin
и facebook
из предыдущих упражнений.
linkedin <- c (16, 9, 13, 5, 2, 17, 14)
facebook <- c (17, 7, 5, 16, 8, 13, 14)
Определить, когда один или оба социальных профиля посетили не менее 12 раз.
Решение
# Когда один или оба были посещены не менее 12 раз?В дни 1, 3, 4, 6 и 7 один или оба социальных профиля были посещены не менее 12 раз.
linkedin> = 12 | facebook> = 12
Оператор НЕ, обозначенный восклицательным знаком !
, просто отменяет логическое значение, в котором он используется.То есть ! ИСТИНА
оценивается как ЛОЖЬ
, а ! ЛОЖЬ
оценивается как ИСТИНА
.
Так же, как операторы OR и AND, мы можем использовать оператор NOT в сочетании с логическими операторами. Это не всегда необходимо. Например, ! (X <5)
совпадает с x> = 5
.
Однако в R бывают случаи, когда оператор NOT особенно удобен. Например, встроенная функция R, is.numeric ()
проверяет, является ли объект R числовым.Нет соответствующей встроенной функции, которая проверяет, не является ли это числовым. Чтобы проверить, нам нужно будет отрицать результат (! Is.numeric ()
). Итак, is.numeric (5)
оценивается как TRUE
, поскольку 5 - это число. Если мы отрицаем этот результат с помощью оператора NOT (! Is.numeric (5)
), мы получим FALSE
. Если, однако, мы используем is.numeric ("привет")
, мы получим FALSE
. Отрицание этого результата (! Is.numeric ("hello")
) дает нам ИСТИНА
.
Теперь, как логические операторы работают с векторами и матрицами? Как и операторы отношения, они выполняют операции поэлементно. Рассмотрим эти два вектора:
c (ИСТИНА, ИСТИНА, ЛОЖЬ) & c (ИСТИНА, ЛОЖЬ, ЛОЖЬ)
Операция И над этими двумя векторами приводит к вектору с элементами ИСТИНА,
, ЛОЖЬ,
и НЕВЕРНО
.
ИСТИНА ЛОЖЬ ЛОЖЬ
Первыми элементами в обоих векторах являются ИСТИНА
, поэтому первый элемент результирующего вектора содержит ИСТИНА
.Аналогично, для вторых элементов, где ИСТИНА и ЛОЖЬ
дают ЛОЖЬ
, а в третьих элементах, где ЛОЖЬ и ЛОЖЬ
дают ЛОЖЬ
.
То же самое происходит с оператором OR:
c (ИСТИНА, ИСТИНА, ЛОЖЬ) | c (ИСТИНА, ЛОЖЬ, ЛОЖЬ)
ИСТИНА | ИСТИНА
дает ИСТИНА
, ИСТИНА | FALSE
также дает TRUE
и FALSE | ЛОЖЬ
дает ЛОЖЬ
. Таким образом, мы получили бы результат:
ИСТИНА ИСТИНА ЛОЖЬ
Оператор НЕ также работает с каждым элементом вектора:
! C (ИСТИНА, ИСТИНА, ЛОЖЬ)
ИСТИНА
преобразуются в ЛОЖЬ
, и FALSE
преобразуются в TRUE
.Итак, мы получили бы результат
FALSE FALSE TRUE
Чтобы вы могли попробовать
Что вернет следующий набор выражений R:
x <- 5
y <- 7
! (! (X <4) & !!! (y> 12))
Решение
FALSE
Чтобы определить ответ, полезно разбить запрос на более мелкие выражения:
Сначала у нас есть левое выражение ! (x <4)
внутреннего выражения (! (X <4) & !!! (y> 12))
.
-
x <4
- посколькуx
равно 5, а5 <4
неверно, это утверждение оценивается какFALSE
-
! (X <4)
- Из вышеприведенного шага мы определил, чтоx <4
оценивается какFALSE
. Отрицание этого результата дает нам! FALSE
, что соответствуетTRUE
.
Далее у нас есть правильное выражение !!! (y> 12)
внутреннего выражения (! (X <4) & !!! (y> 12))
.
-
y> 12
- Поскольку y равно 7, а7> 12
неверно, это выражение оценивается какFALSE
. -
! (Y> 12)
- Отрицая результат шага 1, получаем! FALSE
илиTRUE
. -
!! (y> 12)
- Отрицая результат шага 2, мы получаем! ИСТИНА
илиЛОЖЬ
. -
!!! (y> 12)
- Отрицая результат шага 3, получаем! FALSE
илиTRUE
.
Итак, для внутреннего выражения (! (X <4) & !!! (y> 12))
оно оценивается как ИСТИНА и ИСТИНА
, что равно ИСТИНА
.
Внешний оператор НЕ !
отменяет это ИСТИНА
, делая ! (! (X <4) & !!! (y> 12))
равным ! ИСТИНА
или ЛОЖЬ
.
В чем разница между одинарным и двойным амперсандом или вертикальной чертой? В R вы можете использовать как версию с одинарным знаком, так и версию с двойным знаком, но результат логической операции, которую вы выполняете, может быть другим.Наибольшая разница возникает, когда вы используете два типа операций над векторами.
c (ИСТИНА, ИСТИНА, ЛОЖЬ) & c (ИСТИНА, ЛОЖЬ, ЛОЖЬ)
Как мы видели ранее, приведенное выше выражение вычисляет вектор:
ИСТИНА ЛОЖЬ ЛОЖЬ
Однако, если мы используем двойной амперсанд , мы просто получаем ИСТИНА
.
c (ИСТИНА, ИСТИНА, ЛОЖЬ) && c (ИСТИНА, ЛОЖЬ, ЛОЖЬ)
Это связано с тем, что операция двойного амперсанда проверяет только первый элемент каждого вектора.В этом случае первыми элементами являются ИСТИНА
и ИСТИНА
, поэтому выражение возвращает ИСТИНА
.
Вы можете видеть аналогичные вещи, происходящие с оператором OR. Единый знак версии |
возвращается и весь вектор. Версия с двойным знаком ||
возвращает результат операции ИЛИ для первого элемента каждого вектора.
Так что будьте внимательны при выполнении логических операций с векторами. Вероятно, вы захотите использовать версию с единым знаком.
Логический оператор НЕ
Логический оператор НЕ позволяет пользователю выражать условия, которые лучше всего выражать отрицательно. По сути, он меняет логическое значение условия, по которому он действует. То есть это принимает все строки, кроме тех, которые удовлетворяют условию. Ты пишешь условное выражение с ключевым словом НЕ перед состояние:
ГДЕ НЕ условие
Условие может быть простым условием или условием, содержащим И и ИЛИ.Составное условие с использованием НЕ истинно, если условие, следующее за НЕ ложно; и составное условие ложно если условие, следующее за НЕ, верно.
Например, предположим, что вы ищете все отделы, которые не в Корпоративном дивизионе. Вы можете написать условное выражение:
НЕ (DIV = 'CORP')Скобки необязательны, но включены для облегчения чтения состояние.
Если отдел входит в Подразделение продуктов, программа оценивает состояние следующим образом:
Процесс оценки | Комментарии |
Шаг 1: НЕ (DIV = 'CORP') | Исходное состояние. |
Шаг 2: NOT ('PROD' = 'CORP') | Замените PROD на DIV . |
Шаг 3: НЕ (ложь) ` | Поскольку PROD не равно CORP , |
условие DIV = 'CORP' неверно. | |
Шаг 4: истина | НЕ изменяет ложь на истину, |
строка извлекается. |
NOT обычно используется с логическими операторами, такими как IN, BETWEEN, LIKE
и т. Д., Которые будут рассмотрены в следующем разделе.
В условии запроса NOT (DIV = 'CORP')
вы более вероятно
записать условие следующим образом:
WHERE DIV! = 'CORP'В этом запросе оператор `
! =
'показывает, что DIV
не должно быть равно CORP
.Пример: Оператор НЕ может использоваться более чем с одним выражением.Перечислить все отделов, за исключением Корпоративного дивизиона или отделов Подразделение продукции.
Введите выписку:
ВЫБРАТЬ ИМЯ, ДЕЛ. ИЗ ОТДЕЛЕНИЯ ГДЕ НЕ (DIV = 'CORP' OR DIV = 'PROD');Обратите внимание, что
НЕ
предшествует всему условию.Отображаемый результат будет:
DNAME DIV Управление информационными системами ИНФОРМАЦИЯ Корпоративная библиотека INFO Стратегическое планирование и разведка INFO |
Этот оператор извлекает название отдела и подразделения для всех отделы, которые не являются Корпоративными или Продуктовыми, выявляя подразделение еще не полученный в ходе предыдущих поисков, Информационный отдел.
Авторские права © Thunderstone Software Последнее обновление: 22 июля 2021 г.
Использование логических операторов - Учебные пособия - Библиотеки университетов
булевых операторов были названы в честь Джорджа Буля, математика и создателя алгебры логики (булевой алгебры), которая стала основой для проектирования цифровых компьютерных схем.
Мы используем логические операторы, также называемые коннекторами, в инструментах онлайн-поиска, чтобы связать наши поисковые запросы, чтобы мы могли расширять (расширять) и сужать (ограничивать) поиск, чтобы увеличить количество получаемых релевантных результатов поиска.Три наиболее часто используемых логических оператора - это И , ИЛИ и НЕ .
Использование логических операторов между поисковыми запросами позволяет нам
- объедините термины для узкого поиска,
- одновременно выполняет поиск альтернативных терминов, а
- исключить элементы, содержащие указанные условия.
Логический оператор AND используется для сужения (ограничения или ограничения) поиска. Он ограничивает результаты поиска элементами, содержащими все поисковые запросы, связанные с И .Несколько терминов можно комбинировать с оператором AND, чтобы еще больше ограничить результаты поиска.
Изображение слева иллюстрирует результаты поиска малой группы И принятия решений . Фиолетовая заштрихованная область представляет результаты поиска, которые будут извлечены - только элемента с обоими условиями поиска.
Логический оператор OR используется для расширения поиска. Он расширяет наши результаты поиска , чтобы включить элементы, содержащие любой из наших поисковых запросов.Использование оператора OR помогает, когда мы хотим найти синонимы и альтернативные термины.
Изображение слева иллюстрирует результаты поиска малой группы ИЛИ принятия решения . Фиолетовая заштрихованная область представляет результаты поиска, которые будут извлечены - любой элемент, содержащий одно из условий поиска.
Логический оператор NOT используется для сужения (ограничения или ограничения) поиска. Он ограничивает наши результаты поиска , не извлекая элементы с терминами, помеченными как NOT .Оператор NOT следует использовать с осторожностью, потому что можно случайно исключить соответствующий материал.
Изображение слева иллюстрирует результаты поиска малой группы, НЕ принимающей решения . Пурпурная заштрихованная область представляет результаты поиска, которые будут извлечены - элемента с «малой группой» и без элементов, содержащих термин «принятие решения» .
Некоторые инструменты поиска требуют, чтобы логические операторы вводились заглавными буквами. Следовательно, всегда полезно извлекать из них выгоду.
Логические операторы можно комбинировать разными способами и использовать по отдельности или вместе. Многие инструменты поиска предлагают расширенные интерфейсы поиска, которые позволяют нам выбирать логические операторы из раскрывающихся списков, а также вводить их в поля поиска. Эти функции позволяют нам немного контролировать наш поиск.
Посмотрите видео об использовании логических операторов, созданных библиотекой Университета Макмастера. В этом видео объясняется, что такое логические операторы, и демонстрируется их использование в нескольких различных интерфейсах поиска.
Что такое логические операторы? - LibAnswers
Логические операторы - это слова «И», «ИЛИ» и «НЕ». При использовании в библиотечных базах данных (вводимых между вашими ключевыми словами) они могут сделать каждый поиск более точным - и сэкономить ваше время! Предпочитаете интерактивные или видеоуроки?
И сужает поиска, сообщая базе данных, что ВСЕ используемые ключевые слова должны быть найдены в статье, чтобы она появилась в вашем списке результатов.Найдите две или более концепции, которые вас интересуют, комбинируя описательные ключевые слова с AND.
Например, если вам интересно прочитать статьи о том, как молодые люди относятся к политике , , вы можете выполнить поиск по запросу молодежь И политика . Все статьи в ваших результатах будут включать и ключевых слова. Часто базы данных позволяют вам указать , где в статье вы хотите, чтобы эти ключевые слова отображались (заголовок, аннотация, полный текст и т. Д.).
OR расширяет поиск, сообщая базе данных, что любые слов, которые он соединяет, являются приемлемыми .Это особенно полезно при поиске синонимов , таких как «смертная казнь» ИЛИ «смертная казнь».
Итак, если вы введете смертная казнь ИЛИ смертная казнь , ваши результаты будут включать статьи с любым термином, но не обязательно и то и другое.
НЕ сужает поиска, сообщая базе данных , чтобы исключить все термины, следующие за ним из результатов поиска.Это может быть полезно, когда:
- вас интересует очень конкретный аспект темы (позволяет отсеять проблемы, о которых вы не планируете писать)
- , если вы хотите исключить определенный тип статей (например, рецензии на книги обычно не помогают при написании статьи на уровне колледжа)
Используйте НЕ с осторожностью, так как хорошие элементы могут быть исключены из полученных результатов.
В приведенном ниже примере поиск полового воспитания NOT abstinence-only вернет статьи о сексе ed, но не те, которые касаются подходов, основанных только на воздержании.
Посмотрите отличный пример видео ниже!
Поисковые операторы | govinfo.gov
Перейти к: Операторы поля метаданных │ Список общих операторов поля │ Список кодов коллекции │ Поиск метаданных модов
Операторы поисковых запросов
Поскольку запросы могут быть очень сложными и могут использовать несколько разных операторов, необходим способ однозначной оценки выражений.Это достигается за счет использования приоритета операторов, который позволяет указать, какие операторы и выражения оцениваются первыми, вторыми и т. Д. В списке ниже приоритеты операторов от первого до последнего.
- не
- –
- +
- полевые операторы
- прил
- до / #
- рядом / #
- и
- или
В следующих разделах показано, как использовать различные символы и операторы, чтобы сузить область поиска.
Пробелы
Пробел используется для разделения слов или операторов в поисковом запросе. В простом запросе, где операторы не используются, пробелы между словами рассматриваются как подразумеваемые «и», так что результаты поиска будут содержать документы, содержащие все введенные слова.
Примечание. В некоторых случаях поисковая система автоматически предполагает, что два термина, разделенные одним пробелом, следует рассматривать как одну фразу для повышения точности результатов.В первую очередь это происходит с именами собственными.
Для сложных запросов с использованием операторов следует учитывать следующее:
- Когда используются логические операторы, пробелы между словами обрабатываются как подразумеваемое «и» до тех пор, пока в запросе не будет использован другой оператор.
- При использовании операторов «-» или «+» не следует ставить пробел между оператором и введенным словом. Операторы «-» и «+» применяются только к слову, непосредственно прикрепленному к оператору.
- При использовании операторов поля не следует ставить пробел между оператором и искомым словом или фразой.Рекомендуется использовать круглые скобки с операторами поля. Например, название: (законодательная среда).
- Когда используются операторы близости, оператор применяется только к слову или фразе в кавычках, непосредственно перед и после оператора. При создании сложных запросов рекомендуется заключать выражение близости в круглые скобки.
Пример
Для поиска только тех документов, которые содержат слова Билл и Клинтон, вы можете ввести Билла Клинтона в поле поиска и нажать кнопку «Поиск».Поисковая система будет искать в документе оба слова и возвращать те документы, в которых оба слова могут быть найдены в любом месте документа.
Кавычки
Кавычки указывают поисковой системе возвращать документы тогда и только тогда, когда они содержат точную фразу или строку слов между кавычками.
Примеры
- «Слушание в Конгрессе» - это документы, за которыми непосредственно следует слово «слушание в Конгрессе».
- «способами и средствами» извлекает документы со словами «способы», «и» и «означает» в указанном порядке, расположенные рядом друг с другом. "
- способов" и "означает получение документов со словами" способы "," и "и" означает "в любом месте документа. Примечание. Поскольку «и» заключено в кавычки, оно рассматривается как фраза, а не как оператор.
Логические операторы
Логический поиск - это поиск, который использует логические (т. Е. Логические) операторы (И, ИЛИ, НЕ, -) в дополнение к ключевым словам.
- AND: Оператор AND указывает поисковой системе возвращать только документы со всеми введенными вами ключевыми словами. Этот оператор сужает поиск и возвращает меньше результатов поиска
- ИЛИ: Оператор ИЛИ указывает поисковой системе возвращать документы, если они содержат одно или несколько ключевых слов.
- НЕ: оператор НЕ указывает поисковой системе исключить документы из поиска, если они содержат ключевые слова.
- - Оператор: Оператор «-» аналогичен оператору NOT и указывает поисковой системе исключить документы из поиска, если они содержат ключевые слова.
Примечание. Логические операторы не чувствительны к регистру. Например, ввод и или И вернет те же результаты.
Примеры
- Конгресс и слушание извлекают документы со словом «конгрессмен» и «слушание» в любом месте документа.
- Конгресс или исполнительная власть находит документы со словом «конгрессмен» или «исполнительный», либо обоими сразу.
- congressional not report находит документы со словом «congressional», но не со словом «report».
- congressional -report извлекает документы со словом «congressional», но не со словом «report». Оператор «-» может использоваться вместо оператора not, но должен предшествовать слову (или выражению) без каких-либо пробелов.
- congressional and not report извлекает документы со словом «congressional», но не со словом «report», операторы », а не«, ведет себя так же, как «не».
- «способами и средствами» извлекает документы со словами «способы», «и» и «означает» в указанном порядке, расположенные рядом друг с другом.Поскольку «и» является частью фразы в кавычках, она рассматривается как часть фразы, а не как оператор. «
- способов» и «означает поиск документов со словами« способы »,« и », и« означает »в любом месте документа. Поскольку «и» заключено в кавычки, оно рассматривается как фраза, а не как оператор.
- title: environment и member: mikulski извлекает документы со словом "environment" в названии и "mikulski" в поле участника.
- title: (слушание или собрание) извлекает документы, в поле заголовка которых содержится слово «слушание» или «собрание».
- title: chesapeake и title: bay извлекает документы со словом «chesapeake» и словом «bay» в поле заголовка метаданных, но не обязательно по порядку.
- congressional and not report извлекает документы со словом «congressional», но не со словом «report». Фраза «, но не» ведет себя так же, как «не».
- congressional not (отчет комитета) извлекает документы со словом «congressional», но не, если они содержат оба слова «комитет» и «отчет».
- конгрессмен не (комитет или собрание) извлекает документы с «конгрессом», но не с «комитетом»; документы с «конгрессом», но не «митингом».
- congressional - (комитет или собрание) находит документы с «конгрессом», но не с «комитетом»; документы с "конгрессным", но не "встречающимся" оператором "-" также работают с выражениями в скобках.
Операторы близости
Операторы близости позволяют указать поиск, когда одно слово находится рядом, рядом или в непосредственной близости от другого слова.Определены три оператора приближения:
- Adj: оператор близости adj указывает, что одно слово находится рядом с другим в документе.
- before / #: оператор близости before / # указывает, что первое слово находится в # словах и перед вторым словом.
- near / #: Оператор близости / # указывает, что первое слово находится в # словах второго слова.
Примеры
- Слушание по административным вопросам в Конгрессе находит документы, за которыми непосредственно следует слово «слушание».
- представитель near / 10 cardin находит документы со словом «представитель» в пределах 10 слов от слова «cardin».
- представитель рядом с кардином извлекает документы со словами "кардин", "рядом" и "представитель" в любом месте документа. Термин «рядом» является оператором, только если он имеет суффикс / #, в противном случае он рассматривается как обычное слово.
- представитель before / 10 cardin находит документы со словом «представитель» в пределах 10 слов и перед словом «cardin».
- представитель перед cardin извлекает документы со словами "cardin", "before" и "представитель" в любом месте внутри документа. Термин «до» является оператором, только если он имеет суффикс / #, в противном случае он рассматривается как обычное слово.
- (Билл и Клинтон) до / 100 (Хиллари и Клинтон) Это вернет ошибку «неподдерживаемый оператор приближения». Оператор «И» (подразумеваемый или иной) не может быть вложен в оператор близости.
- (Билл прил. Клинтон) до / 100 (Хиллари прил. Клинтон) находит документы с именем «Билл Клинтон» в пределах 100 слов от имени «Хиллари Клинтон». Успешная версия вышеуказанного запроса.Обратите внимание, что все операторы в выражении близости должны сами быть операторами близости.
- not Bill before / 100 Clinton также вернет ошибку «неподдерживаемый оператор приближения». Оператор «not» не может находиться в выражении близости.
Примечание. Поскольку выражение близости пытается найти слова (или фразы с кавычками), расположенные в пределах указанной близости друг от друга, использование логических операторов или нескольких слов без кавычек в выражении близости приведет к ошибке поискового запроса. .Один из способов убедиться, что вы не получаете ошибок поискового запроса, - всегда использовать круглые скобки вокруг выражения близости при создании поисковых запросов, использующих операторы близости. Примеры выражений близости с использованием кавычек:
- среда не («Билл Клинтон» до / 100 «Хиллари Клинтон») Окружающая среда
- (Клинтон около / 10 Буш)
Круглые скобки
Круглые скобки используются для группировки слов и выражений, чтобы результат вычисления выражения в скобках можно было использовать как часть более сложного запроса.Рекомендуется использовать круглые скобки, чтобы изолировать выражения в вашем запросе от других выражений, особенно при создании сложных запросов с использованием операторов близости и операторов поля.
Примеры
- (конгресс или исполнительный орган) и слушание извлекает документы, содержащие слова «конгрессмен» и «слушание», а также слова «исполнительный» и «слушающий».
- title: (слушание или собрание) извлекает документы, в поле заголовка которых содержится слово «слушание» или «собрание».
- title: (chesapeake bay) извлекает документы, содержащие слово «chesapeake» и слово «bay» в поле заголовка метаданных, но не обязательно по порядку.
- congressional not (отчет комитета) извлекает документы со словом «congressional», но не, если они содержат оба слова «комитет» и «отчет».
- Конгресс не (комитет или собрание) извлекает документы с «конгрессом», но не «комитетом»; документы с «конгрессом», но не «митингом».
- congressional - (комитет или собрание) находит документы с «конгрессом», но не с «комитетом»; документы с «конгрессом», но не «митингом».Оператор «-» также работает с выражениями в скобках.
- (Билл и Клинтон) до / 100 (Хиллари и Клинтон) вернет ошибку «неподдерживаемый оператор приближения». Оператор «И» (подразумеваемый или иной) не может быть вложен в оператор близости.
- (Билл прил. Клинтон) до / 100 (Хиллари прил. Клинтон) находит документы с именем «Билл Клинтон» в пределах 100 слов от имени «Хиллари Клинтон». Успешная версия вышеуказанного запроса. Обратите внимание, что все операторы в выражении близости должны сами быть операторами близости.
Число совпадений
Оператор «+» количества совпадений может использоваться, чтобы указать, что документам с большим количеством совпадений по определенному слову будет отдаваться предпочтение по сравнению с документами с совпадениями по другим словам.
Примеры
- + cardin комитет конгресса находит документы со словами «cardin», «congressional» и «Committee» в любом месте документа, причем документам, имеющим больше совпадений по «cardin», придается более высокая релевантность, чем документам с большим количеством совпадений со словами «congressional» или « комитет ".
- ++ cardin congressional + Committee извлекает документы со словами "cardin", "congressional" и "Committee" в любом месте документа, причем документы, имеющие больше совпадений по "cardin", получают наибольшую релевантность, за которыми следуют документы, имеющие больше совпадений " комитет "получил следующую по значимости значимость, а документы, имеющие больше совпадений с словом" конгрессмен ", дали более низкую релевантность.
Подстановочные знаки
Подстановочные знаки могут использоваться в качестве замены одного или нескольких символов в поисковом запросе
- ?: Символ? Подстановочный знак заменяет один символ до, внутри или после поискового запроса.
- *: подстановочный знак * заменяет один или несколько символов до, внутри или после поискового запроса.
Примеры
- congress * извлекает документы, содержащие слова, начинающиеся с «конгресс» (например, «конгрессмен», «конгрессмен» и т. Д.).
- con * al извлекает документы, которые начинаются с «con» и заканчиваются на «al», например как «конгрессменский» и «конфессиональный».
- capitali? E извлекает документы, в которых определенные символы могут быть любыми символами в слове.В этом случае примеры совпадений включают документы, которые содержат «заглавные буквы» или «заглавные буквы».
Операторы поля метаданных
Операторы поля - это операторы, представляющие поля метаданных. Использование операторов поля указывает поисковой системе извлекать документы, в которых значение поля метаданных равно значению, заданному в выражении оператора поля. Поиск с использованием операторов поля полезен, когда вы знаете значения описательных данных (метаданных), таких как заголовки, спонсоры и даты.
Диапазон используется для указания набора всех значений, которые должен возвращать запрос.
- Диапазон дат - это набор всех дат от первой даты в выражении до последней даты в выражении.
- Диапазон чисел - это набор всех целых чисел от первого числа в выражении до последнего числа в выражении.
При использовании операторов поля вы должны соблюдать следующие правила:
- Поле должно иметь допустимое имя поля, в противном случае появится сообщение об ошибке поля.
- Значения, введенные для значений метаданных, должны соответствовать формату, в котором они хранятся.
- Не должно быть пробелов по обе стороны от ":", чтобы поле считалось ограничением поля.
Примеры
- title: слух извлекает документы, в названии которых встречается слово «слышание».
- title: environment и member: mikulski извлекает документы со словом «environment» в названии и «mikulski» "в поле члена
- title: (слушание или собрание) извлекает документы со словом" слушание "или" собрание "в поле заголовка.
- title: chesapeake bay извлекает документы со словом" chesapeake "в поле названия метаданных и слово «bay» в документе
- title: «chesapeake bay» извлекает документы с фразой «chesapeake bay» в поле заголовка метаданных.
- title: (chesapeake bay) извлекает документы, содержащие как слово «chesapeake», так и слово « bay "в поле заголовка метаданных, но не обязательно по порядку.
- title: chesapeake и title: bay извлекает документы, содержащие как слово" chesapeake ", так и слово" bay "в поле заголовка метаданных, но не другие. Обычно в порядке
- title: chesapeake title: bay извлекает документы, содержащие как слово «chesapeake», так и слово «bay» в поле заголовка метаданных, но не обязательно в порядке
- congress: range (100,105) извлекает документы для всех конгрессов с номерами от 100 до 105
- publishdate: range (2006-01-01,2006-07-01) извлекает документы с датой выпуска с 1 января 2006 г. по 1 июля 2006 г.
- publishdate: range (2006, 2006) извлекает документы с датой выпуска с 1 января 2006 г. по 31 декабря 2006 г.
- congress: range (, 105) извлекает документы со всеми конгрессами вплоть до 105-го
- publishdate: range (2006-01-01, ) извлекает документы со всеми датами выпуска после 2006-01-01
включительно. В таблице ниже перечислены часто используемые операторы полей, которые применяются ко всем или большинству коллекций.
Списки операторов полей метаданных для конкретных коллекций доступны в разделе «Что доступно».
Операторы общего поля для большинства коллекций
Поле метаданных Отображаемое имя | Оператор поля | Пример | ||
---|---|---|---|---|
Коллекция | Коллекция: | Коллекция: chrg | ||
Правительственный Автор | правительство | правительство Дата публикации | Дата публикации: | Дата публикации: 30 сентября 2006 г. |
Номер класса SuDoc | Sudocclass: | Sudocclass: "y 4.c 73/8: " | ||
Дата приема | ingestdate: | ingestdate: 2008-12-29 | ||
Издатель | издатель: | издатель:" u.s. государственная типография » | ||
Филиал | филиал: | филиал: законодательный | ||
Заголовок | Заголовок: | Заголовок: (безопасность железных дорог) | ||
Номер Конгресса | Конгресс: | Конгресс | ||
Член Конгресса | Член: | Член: Макконнелл | ||
Президент | Президент: | Президент: Клинтон | ||
Цитирование | 10564 цитирование:Публичное право | |||
Ссылка | Ссылка: | Ссылка: "Публичное право 105-264" | ||
Электронное расположение (URL) | url: | url: "http: // www.gpo.gov/fdsys/pkg/BILLS-111hr1071IH/pdf/BILLS-111hr1071IH.pdf " | ||
Идентификатор пакета | packageid: | packageid: FR-2009-03-31 | ||
Гранулы | ID | Гранулы :гранулят: E9-7073 |
Коды коллекции
Код инкассо | Название коллекции |
---|---|
GPO | Дополнительные правительственные публикации |
GOVPUB | Массовые правительственные публикации |
CZIC | Информационный центр прибрежной зоны |
CFR | Свод федеральных правил |
COMPS | Сборник законов |
CPD | Сборник документов Президента |
СЧЕТА | Законопроекты Конгресса |
CCAL | Календарь Конгресса |
CPRT | Отпечатки комитета Конгресса |
CDIR | Справочник Конгресса |
CDOC | Документы Конгресса |
CREC | Рекорд Конгресса |
CRECB | Рекорд Конгресса (Связанное издание) |
CRI | Индекс рекордов Конгресса |
CRPT | Отчеты Конгресса |
ЭКОНИ | Экономические показатели |
ERP | Экономические доклады президентов |
ЭРИК | Отчеты об образовании от ERIC |
FR | Федеральный регистр |
GAOREPORTS | Отчеты GAO и общие решения контролера |
HOB | История векселей |
ЖУРНАЛ | House Journal |
HMAN | Руководство по дому |
LSA | Список затронутых разделов CFR |
PAI | Закон о конфиденциальности, выпуск |
ПЛАВА | Государственное и частное право |
ППС | Публичные документы президентов США |
SMAN | Руководство Сената |
USCODE | Код США |
USCOURTS | Заключения судов США |
ГОВМАН | Руководство правительства США |
УСТАВ | Закон США по особым поручениям |
БЮДЖЕТ | Президентский бюджет |
DOI | Отчеты генерального инспектора Департамента внутренних дел |
ERP | Экономический отчет президента (1995) |
ЖУРНАЛ | Журнал Палаты представителей |
Поиск в метаданных MODS
MODS - это стандарт метаданных, который включает информацию о цифровом объекте.Это расшифровывается как Схема описания объекта метаданных, и этот стандарт поддерживается Библиотекой Конгресса.
Вы можете выполнить поиск по любому полю в метаданных MODS.
Примеры:
- Поиск по запросу mods: президент: @type: execord приведет к появлению списка документов, которые имеют атрибут type: execord в поле президентскийDoc в MODS и, следовательно, являются исполнительными распоряжениями.
- Поиск модов : dateIngested: (2012-04-13) приведет к появлению списка документов, которые имеют значение 2012-04-13 в поле dateIngested в MODS и поэтому были загружены в систему на 13 апреля 2012 г.
- Поиск mods: identifier: (@ type: "бывший идентификатор пакета": "f: h200ih.txt") приведет к появлению списка документов, которые имеют значение f: h200ih.txt для атрибута type: «прежний идентификатор пакета» в поле идентификатора в MODS.
Операторы сравнения и логические операторы | Codecademy
Используйте эту статью в качестве справочного материала для сравнения JavaScript и логических операторов.
- Операторы сравнения - операторы, которые сравнивают значения и возвращают
true
илиfalse
.Операторы включают:>
,<
,> =
,<=
,===
и! ==
. - Логические операторы - операторы, объединяющие несколько логических выражений или значений и обеспечивающие один логический вывод. К операторам относятся:
&&
,||
и!
.
Операторы сравнения
Возможно, вы знакомы с операторами сравнения из математического класса.Убедимся, что в ваших знаниях нет пробелов.
- Меньше чем (
<
) - возвращаетtrue
, если значение слева меньше значения справа, в противном случае возвращаетсяfalse
. - Больше чем (
>
) - возвращаетtrue
, если значение слева больше значения справа, в противном случае возвращаетсяfalse
. - Меньше или равно (
<=
) - возвращаетtrue
, если значение слева меньше или равно значению справа, в противном случае возвращаетсяfalse
. - Больше или равно (
> =
) - возвращаетtrue
, если значение слева больше или равно значению справа, в противном случае возвращаетсяfalse
. - Equal to (
===
) - возвращаетtrue
, если значение слева равно значению справа, в противном случае возвращаетfalse
. - Не равно (
! ==
) - возвращаетtrue
, если значение слева не равно значению справа, в противном случае возвращаетfalse
.
Логические операторы
Операторы сравнения позволяют нам утверждать равенство оператора с JavaScript. Например, мы можем утверждать, равны ли два значения или выражения с ===
, или одно значение больше другого с >
.
Однако есть сценарии, в которых мы должны утверждать, верны ли несколько значений или выражений. В JavaScript мы можем использовать логические операторы , , чтобы делать эти утверждения.
Оператор &&
требует, чтобы оба выражения были истинными, чтобы выражение было истинным. Поскольку одно выражение ложно, а другое истинно, выражение является ложным и оценивается как false
.
Как использовать Python или оператор - Real Python
В Python есть три логических оператора: и
, или
, и , а не
. С их помощью вы можете проверить условия и решить, по какому пути будут выполняться ваши программы.В этом руководстве вы узнаете об операторах Python или
и о том, как их использовать.
Вы узнаете, как использовать оператор Python или
, построив несколько практических примеров. Даже если вы на самом деле не используете все возможности, которые предлагает оператор Python или
, его освоение позволит вам писать лучший код.
Логическая логика
Джордж Буль (1815–1864) разработал то, что сейчас называется Булевой алгеброй , которая является основой цифровой логики компьютерного оборудования и языков программирования.
Логическая алгебра построена вокруг значения истинности выражений и объектов (независимо от того, являются ли они истинными или ложными ) и основана на логических операциях И
, ИЛИ
и НЕ
. Эти операции реализуются с помощью логических или логических операторов, которые позволяют создавать логических выражений , которые являются выражениями, которые оцениваются как истинные или ложные.
С помощью булевой логики вы можете оценивать условия и решать, какие операции будут выполнять ваши программы, в зависимости от истинности этих условий.Это важный краеугольный камень программирования, который предоставляет вам инструменты для определения последовательности выполнения ваших программ.
Давайте взглянем на некоторые из основных концепций, связанных с булевой логикой в Python:
Boolean - это тип значения, которое может быть либо
True
, либоFalse
. В Python логический тип -bool
, который является подтипомint
.Логические значения - это значения
True
илиFalse
(с заглавной буквы T и F ) в Python.Логическая переменная - это переменная, которая может иметь значение
True
илиFalse
. Логические переменные обычно используются какфлагов
, чтобы указать, существуют ли определенные условия.Логическое выражение - это выражение, которое возвращает либо
True
, либоFalse
.Логический контекст может быть
, если условия
, и, когда циклы
, где Python ожидает, что выражение будет оцениваться как логическое значение.Вы можете использовать практически любое выражение или объект в логическом контексте, и Python попытается определить его истинное значение.Операнды - это подвыражения или объекты, включенные в выражение (логическое или нет) и связанные оператором.
Логические или логические операторы - это
И
(логическиеИ
или конъюнкция),OR
(логическиеOR
или дизъюнкция) иНЕ
(логическиеНЕ
или отрицание).Ключевые словаи
,или
и, а не
являются операторами Python для этих операций.
Теперь, когда у вас есть более четкое представление о логической логике, давайте перейдем к еще нескольким темам, связанным с Python.
Логические операторы Python
Python имеет три логических оператора, которые набираются как простые английские слова:
-
и
-
или
-
не
Эти операторы соединяют логические выражения (и объекты) для создания составных логических выражений.
Логические операторы Python всегда принимают два логических выражения или два объекта или их комбинацию, поэтому они считаются бинарными операторами .
В этом руководстве вы познакомитесь с оператором Python или
, который является оператором, реализующим логическую операцию OR
в Python. Вы узнаете, как это работает и как им пользоваться.
Как работает оператор Python
или
С помощью логического оператора OR
можно соединить два логических выражения в одно составное выражение.По крайней мере одно подвыражение должно быть истинным, чтобы составное выражение считалось истинным, и не имеет значения, какое именно. Если оба подвыражения ложны, тогда выражение ложно.
Это общая логика оператора OR
. Однако оператор Python или
делает все это и многое другое, как вы увидите в следующих разделах.
Использование
или
с логическими выражениями Вам понадобятся два подвыражения, чтобы создать логическое выражение с использованием оператора Python или
в качестве соединителя.Базовый синтаксис логического выражения с или
выглядит следующим образом:
# Синтаксис для логических выражений на Python или на Python
exp1 или exp2
Если хотя бы одно из подвыражений ( exp1
или exp2
) оценивается как True
, то выражение считается True
. Если оба подвыражения оцениваются как False
, тогда выражение будет False
. Это определение называется включительно или , поскольку оно допускает обе возможности, а также любую из них.
Вот краткое описание поведения оператора Python или
:
Результат эксп1 | Результат эксп2 | Результат exp1 или exp2 |
---|---|---|
Истинно | Истинно | Истинно |
Истинно | Ложь | Истинно |
Ложь | Истинно | Истинно |
Ложь | Ложь | Ложь |
Таблица 1. Логический оператор Python или
: таблица истинности
Эта таблица суммирует результирующее значение истинности логического выражения, такого как exp1 или exp2
, в зависимости от значений истинности его подвыражений.
Проиллюстрируем результирующие значения истинности, показанные в таблице , , кодируя несколько практических примеров:
>>> >>> exp1 = 1 == 2
>>> exp1
Ложь
>>> exp2 = 7> 3
>>> exp2
Правда
>>> exp1 или exp2 # Вернуть True, потому что exp2 истинно
Правда
>>> exp2 или exp1 # Также возвращает True
Правда
>>> ехр3 = 3 <1
>>> exp1 или exp3 # Вернуть False, потому что оба значения False
Ложь
В предыдущих примерах всякий раз, когда подвыражение оценивается как True
, глобальным результатом будет True
.С другой стороны, если оба подвыражения оцениваются как False
, то глобальный результат также будет False
.
Использование
или
с общими объектами Как правило, операнды выражения, включающего операцию OR
, должны иметь логические значения, как показано в Таблица 1 , и возвращать в результате значение истинности. Когда дело доходит до объектов, Python не очень строг в этом отношении и внутренне реализует набор правил, чтобы решить, считается ли объект истинным или ложным:
По умолчанию объект считается истинным, если его класс не определяет метод
__bool __ ()
, который возвращаетFalse
, или метод__len __ ()
, который возвращает ноль при вызове с объектом.Вот большинство встроенных объектов, которые считаются ложными:
- константы, определенные как ложные:
Нет
иЛожь
.- ноль любого числового типа:
0
,0,0
,0j
,Десятичный (0)
,Дробь (0, 1)
- пустые последовательности и коллекции:
''
,()
,[]
,{}
,набор ()
,диапазон (0)
(Источник)
Если операнды, участвующие в операции или
, являются объектами, а не логическими выражениями, то оператор Python или
возвращает истинный или ложный объект, а не значения True
или False
, как вы могли ожидать.Истинная ценность этого объекта определяется в соответствии с правилами, которые вы видели ранее.
Это означает, что Python не приводит результат операции или
к объекту bool
. Если вы тестируете два объекта с использованием или
в Python, то оператор вернет первый объект, который оценивается как истинный, или последний объект в выражении, независимо от его истинного значения:
>>> 2 или 3
2
>>> 5 или 0,0
5
>>> [] или 3
3
>>> 0 или {}
{}
В двух первых примерах первые операнды ( 2
и 5
) истинны (не равны нулю), поэтому оператор Python или
всегда возвращает первый.
В последних двух примерах левый операнд - ложь (пустой объект). Оператор Python или
оценивает оба операнда и возвращает объект справа, который может иметь значение true или false.
Примечание: Если вам действительно нужно получить одно из значений True
или False
из логического выражения, включающего объекты, вы можете использовать bool (obj)
, встроенную функцию, возвращающую Истина
или Ложь
в зависимости от истинности значения obj
.
Вы можете резюмировать поведение, показанное в предыдущем коде, следующим образом:
Левый объект | Правый объект | Результат x или y |
---|---|---|
x | y | x , если оно истинно, иначе y . |
Таблица 2. Python или
Поведение оператора при тестировании объектов вместо логических выражений
Короче говоря, оператор Python или
возвращает первый объект, который оценивается как истинный, или последний объект в выражении, независимо от его истинного значения.
Вы можете обобщить это поведение, объединив несколько операций в одном выражении, например:
В этом примере оператор Python или
возвращает первый найденный истинный операнд или последний. Это практическое правило запоминания того, как или
работают в Python.
Смешивание логических выражений и объектов
Вы также можете комбинировать логические выражения и общие объекты Python в операции или
. В этом случае оператор Python или
по-прежнему будет возвращать первый истинный операнд или последний операнд, но возвращаемое значение может быть True
или False
или объект, который вы тестируете:
Результат выражения | Результат объекта | Результат exp или obj |
---|---|---|
Истинно | Истинно | Истинно |
Истинно | Ложь | Истинно |
Ложь | Ложь | obj |
Ложь | Истинно | obj |
Таблица 3. Поведение оператора Python или
при тестировании объектов и логических выражений
Давайте посмотрим, как это работает, на нескольких примерах:
>>> >>> 2 <4 или 2 # Случай 1
Правда
>>> 2 <4 или [] # Случай 2
Правда
>>> 5> 10 или [] # Случай 3
[]
>>> 5> 10 или 4 # Случай 4
4
В случае 1 и случае 2 подвыражение 2 <4
было оценено как True
, и возвращенное значение было True
.С другой стороны, в Case 3 и Case 4 подвыражение 5> 10
было оценено как False
, поэтому был возвращен последний операнд, и вы получили пустой список ( []
) и целое число ( 4
) вместо True
или False
.
В качестве упражнения вы можете попытаться расширить Table 3 , изменив порядок выражений в третьем столбце, то есть использовать obj или exp
и попытаться предсказать результаты.
Оценка короткого замыкания
Python иногда может определить значение истинности логического выражения до того, как он оценит все задействованные подвыражения и объекты. Например, оператор Python или
прекращает оценку операндов, как только находит что-то, что считается истинным. Например, следующее выражение всегда будет Истина
:
>>> Верно или 4 <3
Правда
Если первый операнд в выражении или
имеет значение true, независимо от значения второго операнда ( 4 <3
равно False
), то выражение считается истинным, а второй операнд никогда оценен.Это называется оценкой короткого замыкания (ленивый) .
Рассмотрим другой пример:
>>> >>> def true_func ():
... print ('Запуск true_func ()')
... вернуть True
...
>>> def false_func ():
... print ('Запуск false_func ()')
... вернуть False
...
>>> true_func () или false_func () # Случай 1
Запуск true_func ()
Правда
>>> false_func () или true_func () # Случай 2
Запуск false_func ()
Запуск true_func ()
Правда
>>> false_func () или false_func () # Случай 3
Запуск false_func ()
Запуск false_func ()
Ложь
>>> true_func () или true_func () # Случай 4
Запуск true_func ()
Правда
В случае 1 Python оценил true_func ()
.Поскольку он возвращает True
, следующий операнд ( false_func ()
) не оценивается. Обратите внимание, что фраза Running false_func ()
никогда не печатается. Наконец, все выражение считается True
.
Случай 2 оценивает обе функции, потому что первый операнд ( false_func ()
) равен False
. Затем оператор возвращает второй результат, то есть значение, возвращаемое функцией true_func ()
, что составляет True
.
Случай 3 оценивает обе функции, поскольку обе возвращают False
. Операция возвращает значение, возвращаемое последней функцией, то есть False
, а выражение считается False
.
В Case 4 Python оценивает только первую функцию, которая равна True
, а выражение - True
.
В короткозамкнутой (ленивой) оценке второй операнд логического выражения не оценивается, если значение выражения может быть определено только на основе первого операнда.Python (как и другие языки) обходит эту вторую оценку в пользу производительности, потому что оценка второго операнда была бы ненужной тратой времени ЦП.
Наконец, когда дело доходит до производительности при использовании оператора Python или
, обратите внимание на следующее:
Выражения в правой части оператора Python
или
могут вызывать функции, которые выполняют существенную или важную работу или имеют побочные эффекты, которых не будет, если правило короткого замыкания вступит в силу.Условие, которое с большей вероятностью будет истинным, может быть крайним левым условием. Этот подход может сократить время выполнения ваших программ, потому что таким образом Python может определить, истинно ли условие, просто оценив первый операнд.
Краткое содержание раздела
Вы узнали, как работает оператор Python или
, и познакомились с некоторыми из его основных функций и поведения. Теперь вы знаете достаточно, чтобы продолжить повышение уровня, изучая, как использовать оператор для решения реальных проблем.
Перед этим давайте вспомним некоторые важные моменты о или
в Python:
Он удовлетворяет общим правилам, которым должен следовать логический оператор
OR
. Если одно или оба логических подвыражения верны, результат будет истинным. В противном случае, если оба подвыражения ложны, результат будет ложным.Он возвращает объекты вместо значений
True
илиFalse
при тестировании объектов Python. Это означает, что выражениеx или y
возвращаетx
, если оно оценивается как истинное, а в противном случае возвращаетy
(независимо от его истинного значения).Он следует предопределенному набору внутренних правил Python для определения истинностного значения объекта.
Он прекращает оценку операндов, как только находит что-то, что считается истинным. Это называется коротким замыканием или ленивым вычислением.
Теперь пора узнать, где и как можно использовать этот оператор, с помощью нескольких примеров.
Логические контексты
В этом разделе вы увидите несколько практических примеров использования оператора Python или
и узнаете, как использовать преимущества его несколько необычного поведения для написания лучшего кода Python.
Есть две основные ситуации, когда вы можете сказать, что работаете в логическом контексте в Python:
-
, если операторы
: условное исполнение -
при
циклов: условное повторение
С помощью оператора if
вы можете определить путь выполнения ваших программ в зависимости от истинности некоторых условий.
С другой стороны, циклы и
позволяют повторять фрагмент кода до тех пор, пока данное условие остается верным.
Эти две структуры являются частью того, что вы бы назвали операторами потока управления . Они помогают вам выбрать путь выполнения ваших программ.
Вы можете использовать оператор Python или
для построения логических выражений, подходящих для использования как с оператором if
, так и с циклами while
, как вы увидите в следующих двух разделах.
if
Заявления Предположим, вы хотите убедиться, что одно из двух условий (или оба) выполняются, прежде чем выбирать определенное
путь исполнения.В этом случае вы можете использовать оператор Python или
для соединения условий в одном выражении и использовать это выражение в операторе if
.
Предположим, вам нужно получить подтверждение от пользователя для выполнения некоторых действий в зависимости от ответа пользователя:
>>> >>> def answer ():
... ans = input ('Ты ...? (да / нет):')
... если ans.lower () == 'yes' или ans.lower () == 'y':
... print (f'Положительный ответ: {ans} ')
... elif ans.lower () == 'no' или ans.lower () == 'n':
... print (f'Отрицательный ответ: {ans} ')
...
>>> ответ ()
Ты...? (да / нет): y
Положительный ответ: y
>>> ответ ()
Ты...? (да / нет): n
Отрицательный ответ: n
Здесь вы получаете ввод пользователя и назначаете его и
. Затем оператор if
начинает проверку условий слева направо. Если хотя бы один из них оценивается как истина, он выполняет блок кода if
. Заявление elif
делает то же самое.
При первом вызове answer ()
пользователь ввел y
, что удовлетворяет первому условию, и , если кодовый блок
был выполнен. Во втором вызове ввод пользователя ( n
) удовлетворял второму условию, поэтому блок кода elif
был выполнен. Если пользовательский ввод не удовлетворяет никакому условию, блок кода не выполняется.
Другой пример: вы пытаетесь определить, выходит ли число за пределы допустимого диапазона.В этом случае также можно использовать оператор Python или
. Следующий код проверяет, выходит ли x
за пределы диапазона от 20
до 40
:
>>> def my_range (x):
... если x <20 или x> 40:
... print ('За пределами')
... еще:
... print ('Внутри')
...
>>> мой_ диапазон (25)
Внутри
>>> мой_ диапазон (18)
Вне
Когда вы вызываете my_range ()
с x = 25
, оператор if
проверяет 25 <20
, что соответствует False
.Затем он проверяет x> 40
, что также является False
. Конечный результат - False
, поэтому был выполнен блок else
.
С другой стороны, 18 <20
оценивается как True
. Затем оператор Python или
выполняет оценку короткого замыкания, и условие считается True
. Основной блок выполняется, и значение выходит за пределы диапазона.
в то время как
петель , а циклы
- еще один пример логического контекста, в котором можно использовать оператор Python или
.Используя или
в заголовке цикла, вы можете протестировать несколько условий и запустить тело, пока все условия не станут ложными.
Предположим, вам нужно измерить рабочую температуру некоторого промышленного оборудования, пока она не достигнет диапазона от 100 ºF до 140 ºF. Для этого вы можете использовать цикл и
:
из времени импорта сна
temp = measure_temp () # Начальное измерение температуры
при температуре <100 или температуре> 140:
print ('Температура вне рекомендуемого диапазона')
print ('Новое измерение температуры за 30 секунд')
сон (30)
print ('Измерение температуры... ')
temp = measure_temp ()
print (f'Новая температура: {temp} ºF ')
Это игрушечный пример почти в псевдокоде, но он иллюстрирует идею. Здесь цикл и
работает до тех пор, пока температура не достигнет отметки
между 100 ºF и 140 ºF. Если значение температуры выходит за пределы допустимого диапазона, запускается тело цикла, и вы снова будете измерять температуру. Как только measure_temp ()
вернет значение от 100 ºF до 140 ºF, цикл завершится. Измерение температуры выполняется каждые 30 секунд с использованием режима сна (30)
.
Не-логические контексты
Вы можете воспользоваться преимуществами специальных возможностей оператора Python или
вне логических контекстов. Эмпирическое правило по-прежнему заключается в том, что результатом ваших логических выражений является первый истинный операнд или последний в строке.
Обратите внимание, что логические операторы (включая или
) оцениваются перед оператором присваивания ( =
), поэтому вы можете присвоить результат логического выражения переменной так же, как и с обычным выражением:
>>> a = 1
>>> b = 2
>>> var1 = a или b
>>> var1
1
>>> a = Нет
>>> b = 2
>>> var2 = a или b
>>> var2
2
>>> a = []
>>> b = {}
>>> var3 = a или b
>>> var3
{}
Здесь оператор или
работает должным образом, возвращая первый истинный операнд или последний операнд, если оба были оценены как ложные.
Вы можете воспользоваться этим несколько особенным поведением или
в Python, чтобы реализовать Pythonic-решение некоторых довольно распространенных проблем программирования. Давайте посмотрим на несколько реальных примеров.
Значения переменных по умолчанию
Один из распространенных способов использования оператора Python или
- выбрать объект из набора объектов в соответствии с его истинным значением. Вы можете сделать это с помощью оператора присваивания:
>>> x = a или b или нет
Здесь вы присвоили x
первый истинный объект в выражении.Если все объекты (в данном случае a
и b
) являются ложными объектами, тогда оператор Python или
возвращает None
, который является последним операндом. Это работает, потому что оператор или
возвращает один из своих операндов в зависимости от их истинного значения.
Вы также можете использовать эту функцию, чтобы присвоить вашим переменным значение по умолчанию. В следующем примере задается x
равным a
, если a
истинно, и по умолчанию
в противном случае:
В предыдущем коде вы присваиваете a
значению x
, только если значение a
оценивается как истинное.В противном случае x
назначается по умолчанию
.
По умолчанию
возврат
Значения Вы можете управлять значением , возвращающим значение
некоторых встроенных функций во время вызова. Такие функции, как max ()
и min ()
, которые принимают итерацию в качестве аргумента и возвращают единственное значение, могут быть вашим идеальным кандидатом для такого рода взлома.
Если вы предоставите пустую итерацию для max ()
или min ()
, вы получите ValueError
.Однако вы можете изменить это поведение с помощью оператора Python или
. Давайте посмотрим на следующий код:
>>> lst = [] # Пустой список для проверки max () и min ()
>>> макс (lst)
Отслеживание (последний вызов последний):
Файл "", строка 1, в
макс (lst)
ValueError: max () arg - пустая последовательность
>>> min (lst)
Отслеживание (последний вызов последний):
Файл "", строка 1, в
мин (lst)
ValueError: min () arg - пустая последовательность
>>> # Используйте Python или оператор, чтобы изменить это поведение
>>> max (lst or [0]) # Вернуть 0
0
>>> min (lst или [0]) # Вернуть 0
0
Поведение по умолчанию для max ()
и min ()
- вызвать ValueError
, если вы вызываете их с пустой итерацией.Однако с помощью оператора Python или
вы предоставляете значение по умолчанию , возвращающее значение
для этих функций, и переопределяете их поведение по умолчанию.
Примечание: В предыдущем примере кода вы видели, как Python вызывает исключения при возникновении некоторых проблем. Если вы хотите узнать больше об исключениях в Python, вы можете взглянуть на Введение в исключения Python.
Изменяемые аргументы по умолчанию
Типичная проблема начинающих программистов Python - попытаться использовать изменяемые объекты в качестве аргументов функций по умолчанию.
Изменяемые значения для аргументов по умолчанию могут сохранять состояние между вызовами. Это часто бывает неожиданно. Это происходит потому, что значения аргументов по умолчанию оцениваются и сохраняются только один раз, то есть при запуске оператора def
, а не при каждом вызове результирующей функции. Вот почему вам нужно быть осторожным при изменении изменяемых значений по умолчанию внутри функций.
Рассмотрим следующий пример:
>>> >>> def mutable_default (lst = []): # Попробуйте использовать изменяемое значение по умолчанию
... lst.append (1) # Менять один и тот же объект каждый раз
... печать (lst)
...
>>> mutable_default (lst = [3, 2]) # По умолчанию не используется
[3, 2, 1]
>>> mutable_default () # Используется по умолчанию
[1]
>>> mutable_default () # Значение по умолчанию увеличивается при каждом вызове
[1, 1]
>>> mutable_default ()
[1, 1, 1]
Здесь каждый вызов mutable_default ()
добавляет 1
в конец lst
, потому что lst
содержит ссылку на тот же объект (значение по умолчанию []
).Вы не получите новый список
каждый раз, когда функция вызывается, как вы ожидали.
Если это не то поведение, которое вам нужно, то традиционным (и самым безопасным) решением является перенос значения по умолчанию в тело функции:
>>> >>> def mutable_default (lst = None): # Использовать None как формальное значение по умолчанию
... если lst равно None:
... lst = [] # Используется по умолчанию? Затем lst получает новый пустой список.
... lst.append (1)
... печать (lst)
...
>>> mutable_default (lst = [3, 2]) # По умолчанию не используется
[3, 2, 1]
>>> mutable_default () # Используется по умолчанию
[1]
>>> mutable_default ()
[1]
В этой реализации вы гарантируете, что для lst
будет установлен пустой список
каждый раз, когда вы вызываете mutable_default ()
без аргументов, полагаясь на значение по умолчанию для lst
.
Оператор if
в этом примере почти можно заменить присвоением lst = lst или []
. Таким образом, если в функцию не передан аргумент, тогда lst
по умолчанию будет иметь значение None
, а оператор Python или
вернет пустой список справа:
>>> def mutable_default (lst = None): # Использовать None как формальное значение по умолчанию
... lst = lst или [] # Используется по умолчанию? Затем lst получает пустой список.... lst.append (1)
... печать (lst)
...
>>> mutable_default (lst = [3, 2]) # По умолчанию не используется
[3, 2, 1]
>>> mutable_default () # Используется по умолчанию
[1]
>>> mutable_default ()
[1]
Однако это не совсем то же самое. Например, если передан пустой список
, то операция или
приведет к тому, что функция изменит и распечатает вновь созданный список
, вместо того, чтобы изменять и печатать первоначально переданный список
, как если подойдет версия
.
Если вы уверены, что будете использовать только непустые объекты list
, то вы можете использовать этот подход. В противном случае придерживайтесь , если версия
.
Нулевой дивизион
Нулевое деление может быть распространенной проблемой при числовых вычислениях. Чтобы избежать этой проблемы, скорее всего, вам придется проверять, равен ли знаменатель 0
или нет, используя оператор if
.
Давайте посмотрим на пример:
>>> >>> def div (a, b):
... если не b == 0:
... вернуть a / b
...
>>> div (15, 3)
5.0
>>> div (0, 3)
0,0
>>> div (15, 0)
Здесь вы проверили, не равен ли знаменатель ( b
) 0
, а затем вернули результат операции деления. Если b == 0
оценивается как Истина
, тогда div ()
неявно возвращает Нет
. Давайте посмотрим, как получить аналогичный результат, но на этот раз с использованием оператора Python или
:
>>> def div (a, b):
... вернуть b == 0 или a / b
...
>>> div (15, 3)
5.0
>>> div (0, 3)
0,0
>>> div (15, 0)
Правда
В этом случае оператор Python или
оценивает первое подвыражение ( b == 0
). Только если это подвыражение False
, оценивается второе подвыражение ( a / b
), и конечным результатом будет разделение на a
и b
.
Разница с предыдущим примером заключается в том, что если b == 0
оценивается как True
, то div ()
возвращает True
вместо неявного None
.
Несколько выражений в
лямбда
Python предоставляет лямбда-выражений
, которые позволяют создавать простые анонимные функции. Лямбда-параметры выражения : выражение
возвращает объект функции. Этот вид функции может быть полезен, если вы хотите определить простые функции обратного вызова и ключевые функции.
Наиболее распространенный шаблон для написания функции лямбда
- использование одного выражения
в качестве возвращаемого значения.Однако вы можете изменить это и позволить лямбда
выполнять несколько выражений с помощью оператора Python или
:
>>> lambda_func = lambda hello, world: print (hello, end = '') или print (world)
>>> lambda_func ('Привет', 'Мир!')
Привет, мир!
В этом примере вы заставили лямбда
выполнить два выражения ( print (hello, end = '')
и print (world)
). Но как работает этот код? Итак, здесь лямбда
запускает логическое выражение, в котором выполняются две функции.
Когда или
оценивают первую функцию, она получает None
, что является неявным возвращаемым значением для print ()
. Поскольку None
считается ложным, или
продолжает вычислять свой второй операнд и, наконец, возвращает его как результат для логического выражения.
В этом случае значение, возвращаемое логическим выражением, также является значением, возвращаемым лямбда
:
>>> result = lambda_func ('Привет', 'Мир!')
Привет, мир!
>>> print (результат)
Никто
Здесь результат
содержит ссылку на значение, возвращаемое функцией лямбда
, которое является тем же значением, которое возвращает логическое выражение.
Заключение
Теперь вы знаете, как работает оператор Python или
, а также как использовать его для решения некоторых распространенных проблем программирования на Python.
Теперь, когда вы знаете основы оператора Python или
, вы сможете:
Используйте оператор Python
или
в логических и небулевых контекстахРешайте различные проблемы программирования, эффективно используя оператор Python
или
Пишите лучше и больше кода Pythonic, пользуясь некоторыми особенностями
или
в PythonЧитайте и лучше понимайте код других людей, когда они используют оператор Python
или
Кроме того, вы узнали немного о булевой логике, а также о некоторых ее основных концепциях в Python.
.