VI. True, False, break, continue.




Сегодня продолжим разбираться с логическим типом данных.

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

True – истина

False – ложь

Так же как и для других типов данных, для логического типа есть связанная с ним функция bool(). Она подобно функциям int(), float(), str() и другим преобразует аргумент в логический тип данных. Чуть поигравшись с этой функцией, мы можем выяснить каковы логические эквиваленты для разных чисел и строк. Например:

Каждый раз, когда мы пишем какую-либо логическое выражение, либо записываем условие в ветвлении, либо записываем условие в заголовок цикла while, интерпретатор вычисляет значение этих выражений, а затем (если это необходимо) преобразует получившийся результат в логический тип.

Объединив эти два факта, мы можем понять, как именно работают приведённые ниже примеры:

В первом примере пользователь вводит число y. Если он введёт число 14, как показано на примере, то в 3 строке выражение примет вид:
if 42 - 14: ->if 28: ->ifbool(28): ->ifTrue:

То есть если пользователь введёт любое число, кроме 42, то условие будет истинным. Если же результатом вычитания станет 0, то логический эквивалент его будет являться False, после чего выполнится else ветка.

Во втором примере ситуация похожая. Если пользователь введёт любую непустую строку, то условие во второй строке будет истинным, и мы поздороваемся с ним, назвав его имя (или любое другое слово, которое он ввёл). Если же пользователь даст там пустую строку, то мы поздороваемся с Джоном Доу.

 

Ещё одна интересная деталь реализации проверки условий в python. Логические операторы в этом языке программирования «ленивые». Если дальнейшая проверка не имеет смысла, то в целях оптимизации, интерпретатор может довольствоваться частичной проверкой. Например:

Число под переменной x у нас чётное. Переменной y у нас вообще нет. В обычной ситуации программа упала бы с ошибкой, однако этого не произошло. В чём же дело?
Разберём подробнее условие во второй строке кода. Оно принимает следующий вид:
x % 2 == 0 ory % 2 == 0: -> Trueory % 2 == 0
Как мы помним, для логического оператора or:
TrueorTrue ->True

TrueorFalse ->True

То есть зная только первую часть выражения, мы уже можем быть уверены, что результатом будет истина. Интерпретатор тоже это понимает, не суётся дальше or, не вычисляет вторую часть выражения и не сталкивается с ошибкой. Это порождает новые возможности интересных решений:

или ошибок:

 

Так же сегодня узнаем про две очень полезные команды для управления циклами.

Команда break прерывает выполнение цикла. Пример:

Цикл должен был бы выполниться 100 раз, однако на 6 итерации выполнилась команда break, после чего цикла сразу завершился.

Команда continue позволяет прервать текущую итерацию цикла и перейти к следующей. Пример:

На примере видно, что все шесть итераций начали своё выполнение, но завершились только нечётные. Все строки тела цикла, которые идут после команды continue не выполняются после её срабатывания.

Пользоваться этими командами не рекомендуется т.к. они ухудшают читаемость кода, особенно для цикла while. Тем не менее разумное использование этих операторов может улучшить читабельность циклов в программе, уменьшив при этом количество вложенных блоков и необходимость в сложной логике выполнения цикла.

 

Домашнее задание:

1) Пользователь вводит натуральное число n, а затем nчисел. Найдите сумму этих чисел и выведете её на экран. При решении данной задачи необходимо использовать бесконечный цикл и команду break.

2) Пользователь вводит натуральное число n, а затем nчисел. Ваша программа должна выяснить сколько чисел потребовалось сложить, что бы их сумма превысила число 10. Выведите на экран кол-во сложенных чисел. Если сумма не превысила число 10 за все введённые пользователем числа, то выводите на экран: «Сумма меньше 10».

3) Пользователь вводит вещественное число nс точностью до десятых. Выведите на экран в одну строку через запятую и пробел все числа от 0 до числа, введённого пользователем умноженного на десять включительно, исключая нечётные числа. В решении используйте команду continue.

4) Напишите программу, которая будет анализировать все введённые пользователем числа. Если пользователь введёт число, кратное 3, то оно считается опасным. Если число, кратное 7, то оно несчастливое. Если же число кратно и 7, и 3 одновременно, то можно кричать «Караул!» и прекращать работу программы.

Пример:

Ввод:

Вывод:

опасное

несчастливое

Караул!



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2022-12-31 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: