Просмотр содержимого документа
«Практическое занятие №43»
Практическое занятие №43 (1И)
Тема: Понятие логических выражений и операций
Цель работы: формирование теоретических и практических навыков работы на языке программирования Python
Оборудование: компьютер с установленной операционной системой Windows, подключение к сети Интернет
Время работы 2 часа
Теоретические сведения
В логическом (булевом) типе данных имеется 2 значения: True («правда») и False («ложь»). Детальное описание этого типа дано в стандарте PEP-285.
Класс bool – это подкласс типа int (т.е. целых чисел). True и False – синглтон-объекты, которые по ходу выполнения программы никогда не меняют место расположения в памяти.
К логическим объектам можно применять математические операции. Есть 3 типа логических операторов: not («не»), or («или»), and («и»).
Операции с логическим типом данных обладают свойствами: коммутативность, дистрибутивность, ассоциативность; к ним применимо правило де Моргана.
Ход работы
Задача 1
Напишите функцию dislike_6(a), которая всегда возвращает True, если только не передается число 6 типа int или типа float (в данном случае она вернет «Только не 6!»).
def dislike_6(a):
if (type(a) is float or type(a) is int) and a == 6.0:
return 'Только не 6!'
return True
# Тесты
print(dislike_6(6.0))
print(dislike_6(6))
print(dislike_6('6'))
print(dislike_6('Хорошо'))
print(dislike_6([6, 6]))
Задача 2
Изучающий язык Python студент постоянно путается в свойствах логических операций (ассоциативность, дистрибутивность, коммутативность, правило де Моргана). Он решил написать функцию-подсказку help_bool(letter), которая принимает одну из 4 букв: к, а, д, м (соответствующую каждому свойству).
Результат выполнения: определенное правило работы в виде строки.
Если будет передано что-то иное, то вернется подсказка-строка с пояснением по каждому возможному аргументу.
def help_bool(letter=None):
if letter == 'к':
return 'A or B = B or A\nA and B = B and A'
elif letter == 'а':
return 'A or (B or C) == (A or B) or C == A or B or C\n' \
'A and (B and C) == (A and B) and C == A and B and C'
elif letter == 'д':
return 'A and (B or C) == (A and B) or (A and C) \nA or (B and C) == (A or B) and (A or C)'
elif letter == 'м':
return 'not(A or B) == not A and not B \nnot(A and B) == not A or not B\n'\
'not(A = B\nnot(not(A)) = A'
else:
return 'Возможные аргументы: к – Коммутативность, д – Дистрибутивность, а – Ассоциативность, ' \
'м – Теорема Де Моргана'
# Тесты
print(help_bool())
print(help_bool([2, 6]))
print(help_bool('к'))
Контрольные вопросы:
В чем смысл дистрибутивности логических выражений?
Какие объекты в Python всегда возвращают булево значение False?