Анонимный пользователь
Дополнительно
Python'эквивалент && (logical-and) в if-выражении
Вот мой код:
def front_back(a, b):
# +++your code here+++
if len(a) % 2 == 0 && len(b) % 2 == 0:
return a[:(len(a)/2)] + b[:(len(b)/2)] + a[(len(a)/2):] + b[(len(b)/2):]
else:
#todo! Not yet done. :P
return
Я получаю ошибку в условном IF. Что я делаю неправильно?
761
10
Вы хотите использовать
and
вместо&&&
.В Python используются условия
and
иor
.т.е.
Два комментария:
and
иor
для логических операций в Python.Есть причина, что вы получаете
синтаксис ошибка
нети усилитель; &
оператор в Python. Аналогично||
и!
и не действует операторы языка Python.Некоторые из операторов, которых вы можете знать из других языков имеют разные имена в Python. Логические операторы
и усилитель; &
и||
на самом деле называется " и " и "или". Аналогичным образом логический оператор отрицания!
называетсяне
.Так что вы могли бы просто написать:
или даже:
Дополнительную информацию (что может пригодиться):
Я обобщил оператор на "аналоги" в этой таблице:
в
См. также документации Python: 6.11. Булевы операции.
Кроме логических операторов Python также имеет побитовое/бинарные операторы:
в
Нет побитовое отрицание в Python (просто побитовое обратный оператор
~
- но это **** не эквивалентно "не").См. также 6.6. Унарные арифметические и побитовые/бинарные operations и 6.7. Бинарные арифметические операции.
Логические операторы (как и во многих других языках) имеют то преимущество, что это короткое замыкание. Это означает, что если первый операнд уже определяет результат, то второе оператора, это'т оценивала вообще.
Чтобы показать это, я использую функцию, которая просто принимает значение, печатает его и снова возвращает его. Это удобно, чтобы увидеть, что на самом деле оценку из-за печати заявления:
Как вы можете видеть, выполняется только один оператор печати, так что питон действительно не'т даже смотреть на правый операнд.
Это не тот случай для бинарных операторов. Они всегда оценивают оба операнда:
Но если первый операнд-это'т достаточно, то, конечно, второй оператор оценивается:
Подводя итог этого вот еще одна таблица:
в
В
true
иfalse
в представлять что типа bool(левая сторона)возвращает, они не'т иметь, чтобы быть
trueили
false, они просто должны вернуть
trueили
falseесли
логическое` называется на их <суп>(1)<суп>.Так в псевдо-код(!) функции " и " и " или " работать, как эти:
в
Обратите внимание, что это псевдо-код, не кода на Python. В Python вы не можете создавать функции называется
и
илиили
потому что это ключевые слова. Также вы никогда не должны использовать на "оценить" или если значение bool(...)`.Настройка поведения собственных классов
Назвать этот неявный
буль
может использоваться, чтобы настроить, как ведут себя классы си
,или
ине
.Чтобы показать, как это можно настроить, я использую этот класс, который снова печатать что-то отслеживать, что происходит:
Так давайте'посмотрим, что происходит с этим классом в сочетании с этими операторами:
Если вы Don'т убоол - тогда Python также проверяет, если объект имеет методлен и если она возвращает значение больше нуля. Что может быть полезно знать, в случае вы создаете контейнер последовательности.
См. также 4.1. Правда испытания значение.
Библиотеки numpy массивы и подклассы
Возможно, несколько выходит за рамки первоначального вопроса, но в случае, если вы'ре дело с библиотеки numpy массивы или подклассы (как панды серии или таблицы данных), то неявный
буль
звоните поднимет ValueError страшный``:В этих случаях вы можете использовать логические и функции из библиотеки numpy, который выполняет элемент-мудрый " и "(или "или"):
Если вы'повторно дело только с boolean массивы вы могли бы также использовать бинарные операторы с библиотеки numpy, они выполняют элемент-мудрый (но и бинарных) сравнений:
<суп>(1)<суп>
Что
буль
призываем операндов должен вернутьtrue
илиfalse
это'т совершенно верно. Это's просто первый операнд, который должен возвращать логическое в его'ы `типа bool метод:Что's, потому что " и "на самом деле возвращает первый операнд, если первый операнд имеет значение "ложь", и если это выполнено, то она возвращает второй операнд:
Аналогично для
Или
А как раз наоборот:Однако, если вы используете их в
если
заявлениеЕсли
также будет неявно вызватьбуль
на результат. Так что эти тонкости могут быть не актуальны для вас.Я пошел с purlely математическое решение:
Вы используете
и
иили
для выполнения логических операций, как в C, с++. Как буквальнои
этои усилитель; &
иили
является||
.Посмотри на этот забавный пример,
Предположим, вы хотите построить логические ворота в Python:
Теперь попробуйте связаться с ними:
Это будет выход:
Надеюсь, что это помогает!
Наверное, это не лучший код для этой задачи, но работает -
Использование "и" в условных. Я часто пользуюсь этим при импорте в тетради Jupyter:
Один
&
(не&усилитель;&
) достаточно или как высокое напрашивается ответ, вы можете использовать 'и'. Я также нашел это в пандесли заменить на "&ампер;" с "и" он выиграл'т работу.
может быть, с & а не % более быстрой и поддерживать читаемость
другие тесты четный/нечетный
х даже ? х % 2 == 0
х-нечетное ? не x % 2 == 0
может быть, более ясно с побитовым и 1
х-нечетное ? х & 1
х даже ? не х & 1 (не странно)