Наряду с логическими операторами И и ИЛИ, часто используется операция «отрицание». Она меняет логическое значение на противоположное. В программировании отрицанию соответствует унарный оператор not
:
not True # False
not False # True
Например, если есть функция, которая проверяет четность числа, то с помощью отрицания можно выполнить проверку нечетности:
def is_even(number):
return number % 2 == 0
print(is_even(10)) # => True
print(not is_even(10)) # => False
В примере выше мы добавили not
слева от вызова функции и получили обратное действие.
Отрицание — инструмент, с которым можно выражать задуманные правила в коде и не писать новые функции.
Если написать not not is_even(10)
, то код сработает даже в таком случае:
print(not not is_even(10)) # => True
https://replit.com/@hexlet/python-basics-logic-logical-negation
В логике двойное отрицание — это отсутствие отрицания:
not not True # True
not not False # False
print(not not is_even(10)) # => True
print(not not is_even(11)) # => False
Теперь вы знаете, что означают операторы И, ИЛИ и not
. С их помощью вы сможете задавать составные условия из двух и более логических выражений.
В этом уроке вам нужно будет реализовать две функции is_palindrome()
и is_not_palindrome()
, принимающие строку на вход
Реализуйте функцию is_palindrome()
, которая определяет, является ли слово палиндромом или нет. Палиндром - это слово, которое читается одинаково в обоих направлениях. Слова в функцию могут быть переданы в любом регистре, поэтому сначала нужно привести слово к нижнему регистру: word.lower()
.
is_palindrome('шалаш') # true
is_palindrome('хекслет') # false
is_palindrome('Довод') # true
is_palindrome('Функция') # false
Реализуйте функцию is_not_palindrome()
, которая проверяет что слово НЕ является палиндромом:
is_not_palindrome('шалаш') # false
is_not_palindrome('Ага') # false
is_not_palindrome('хекслет') # true
Для этого, вызовите функцию is_palindrome()
внутри is_not_palindrome()
и примените отрицание.
Если вы зашли в тупик, то самое время задать вопрос в «Обсуждениях». Как правильно задать вопрос:
Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.
Это нормально 🙆, в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи.
В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.
Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в «Обсуждениях». Идеально, если вы сформулируете непонятные моменты в виде вопросов. Обычно нам нужно несколько дней для внесения правок.
Кстати, вы тоже можете участвовать в улучшении курсов: внизу есть ссылка на исходный код уроков, который можно править прямо из браузера.
Ваше упражнение проверяется по этим тестам
1import index
2
3
4def test1():
5 assert not index.is_not_palindrome('wow')
6 assert index.is_not_palindrome('hexlet')
7 assert not index.is_not_palindrome('asdffdsa')
8 assert not index.is_not_palindrome('Wow')
9 assert index.is_not_palindrome('CodeBasics')
10
Решение учителя откроется через: