Решение модуля 2.5 «Поколение Python»
Пятый урок из курса «Поколение Python», направленный на углубленное изучение манипуляций с целыми числами. По результатам урока ученик должен научиться:
- Находить остаток от деления
- Возводить в N-ую степень
- Решать задачи
- Целочисленно делить
- Находить первую/вторую/третью цифру от всего числа
Вопросы
- Вычислите результат целочисленного деления.
23 // 7 = 3
20 // 5 = 4
2 // 5 = 0
123 // 10 = 12
— 123 // 10 = -13 - Вычислите остаток от деления.
23 % 7 = 2
20 % 5 = 0
2 % 5 = 2
123 % 10 = 3 - Что будет выведено на экран в результате выполнения следующей программы?
a = 15 // (16 % 7)
b = 34 % a * 5 — 29 % 5 * 2
print(a + b)
Ответ: 29 - Что будет выведено на экран в результате выполнения следующей программы?
a = 82 // 3 ** 2 % 7
print(a)
Ответ: 2
Геометрическая прогрессия
Геометрической прогрессией называется последовательность чисел b1,b2,…,bn, каждое из которых, начиная с b2, получается из предыдущего умножением на одно и то же постоянное число q (знаменатель прогрессии), то есть
bn=bn−1⋅q
Если известен первый член прогрессии и её знаменатель, то nn-ый член геометрической прогрессии находится по формуле
bn=b1⋅q n−1
# Получаем переменные b1,q,n b1 = int(input()) q = int(input()) n = int(input()) # Выводим результат на экран print(b1 * q ** (n-1))
Расстояние в метрах
Напишите программу, которая находит полное число метров по заданному числу сантиметров.
# Получаем число в сантиметрах и записываем в переменую cm cm = int(input()) # Переводим сантиметры в метры m = cm // 100 # Выводим результат на экран print(m)
Мандарины
n школьников делят k мандаринов поровну, неделящийся остаток остается в корзине. Сколько целых мандаринов достанется каждому школьнику? Сколько целых мандаринов останется в корзине?
# Получаем число школьников и мандаринов записав данные в переменные sch = int(input()) fru = int(input()) # Выводим результат на экран print(fru // sch) print(fru % sch)
Сама неотвратимость ?️
Безумный титан Танос собрал все 6 камней бесконечности и намеревается уничтожить половину населения Вселенной по щелчку пальцев. При этом если население Вселенной является нечетным числом, то титан проявит милосердие и округлит количество выживших в большую сторону. Помогите Мстителям подсчитать количество выживших.
# Получаем население и записываем в переменную n n = int(input()) # Выводим на экран колличество выживших print(n//2 + n%2)
Номер купе ?️
В купейном вагоне имеется 9 купе с четырьмя местами для пассажиров в каждом. Напишите программу, которая определяет номер купе, в котором находится место с заданным номером (нумерация мест сквозная, начинается с 1).
# Получаем номер места и кладем в переменную n n = int(input()) # Добавленное к месту 3 оставшихся места и проводим целочисленное деление на количество мест в купе (4) print((n + 3) // 4)
Пересчет временного интервала
Напишите программу для пересчёта величины временного интервала, заданного в минутах, в величину, выраженную в часах и минутах.
# Получаем и записываем в переменную кол-во минут m = int(input()) h = m // 60 # Часы целочисленное деление s = m % 60 # Минуты остаток от деления # Выводим результат на экран print(m, "мин - это", h, "час", s, "минут.")
Трехзначное число
Напишите программу, в которой рассчитывается сумма и произведение цифр положительного трёхзначного числа.
# Получаем число и сохраняем в переменную num num = int(input()) a = num % 10 # Последняя цифра числа b = (num % 100) // 10 # Предпоследняя цифра числа c = num // 100 # Первая цифра числа # Выводим результат на экран print("Сумма цифр =", c + b + a) print("Произведение цифр wp-block-quote is-style-info">Перестановка цифр
Дано трехзначное число abc, в котором все цифры различны. Напишите программу, которая выводит шесть чисел, образованных при перестановке цифр заданного числа.
# Получаем трехзначное число и сохраняем в переменную abc abc = int(input()) c = abc % 10 # Последняя цифра числа b = (abc % 100) // 10 # Предпоследняя цифра числа a = abc // 100 # Первая цифра числа # Выводим перебор всех перестановок цифр print(a, b, c, sep='') print(a, c, b, sep='') print(b, a, c, sep='') print(b, c, a, sep='') print(c, a, b, sep='') print(c, b, a, sep='')Четырёхзначное число
Напишите программу для нахождения цифр четырёхзначного числа.
# Получаем число и сохраняем в m m = int(input()) m1 = m // 1000 # Цифра в позиции тысяч m2 = (m // 100) % 10 # Цифра в позиции сотен m3 = (m // 10) % 10 # Цифра в позиции десятков m4 = m % 10 # Цифра в позиции единиц # Выводим результат согласно условиям print("Цифра в позиции тысяч равна", m1) print("Цифра в позиции сотен равна", m2) print("Цифра в позиции десятков равна", m3) print("Цифра в позиции единиц равна", m4)Если у вас не отображается решение последних задач, значит у вас включен блокировщик рекламы который вырезает эти ответы
Что будет выведено на экран в результате работы программы, при x=10 и y=15
СРОЧНО 1. Сортування за зростанням полягає у тому, що рядки виділеного діапазону переставляться так, що у вказаному стовпці значення розташуються а) у … числовому порядку.б) у порядку від найменшого до найбільшого.в) від меншого до більшого.2. Познач рядки, у яких наведено вимоги, за дотримання яких можна застосувати інструменти для сортування даних.а) таблиця не може містити порожніх рядків і стовпцівб) стовпці можуть містити тільки текстові данів) рядок заголовків може містити об'єднані клітинкиг) перший рядок у таблиці повинний мати різне форматування з рядками даних 3.Для вмикання режиму фільтрування сліда) на вкладці Дані натиснути кнопку Додатково.б) на вкладці Дані натиснути кнопку Розв'язувач.в) на вкладці Дані натиснути кнопку Фільтр.4.Вибери рядки, у яких наведені дії для застосування сортування за зростанням до виділеного діапазонуа) Основне → Абзац → Вирівняти по центру.б) Дані → Сортування від А до Я.в) Основне → Сортування й фільтр → Сортування за зростанням.г) Вигляд → Структура → Сортування за зростанням.
Основы программирования на языке Python. Часть 2
На минутку представим себя богами. В первой части этой статьи мы с вами разобрали самые базовые элементы программирования. Или на нашем, на «божественном» — мы научились создавать самый простой мир, в котором живут разные человечки со своими особенностями, но без целей в жизни. Пора заставить их что-то делать и использовать свой потенциал по максимуму. Для этого переходим на новый уровень.
Условная конструкция. Табуляция
В этой статье мы будем переводить с алгоритмического языка на язык Python то, что выучили в одной из предыдущих статей — «Основы алгоритмов». Также мы успели изучить создание и применение переменных в Python, и то, какие типы данных могут быть им присвоены, в статье «Основы программирования на языке Python. Часть 1». Но далеко на этом не уедешь — нет никакой гибкости, никаких дополнительных возможностей, ничего интересного.
Условная конструкция if-elif-else — первый шаг на пути к разнообразию. Ее цель — совершать конкретные действия при конкретных обстоятельствах.
Эта логическая конструкция расшифровывается так — «если-иначе». Даже без нашего четкого осознания она появляется в повседневной жизни везде. Самая простая идея алгоритма с ветвлением (с условием): «Если в холодильнике нет продуктов, их надо купить, прежде чем начать готовить ужин, иначе можно сразу начинать готовку».
Как в программе Python выглядят ветвления?
Подробно разберем строение этой конструкции:
- if — главная команда создания условия, ее одной уже достаточно. С ней конструкция будет выглядеть так:
Если выполнится, то будет запущено , иначе не произойдет ничего.
x = 25 if x > 0: print(“x больше 0”) Вывод программы: х больше 0 | x = -6 if x > 0: print(“x больше 0”) Вывод программы: ничего не будет выведено |
- else — команда, задающая альтернативу.
if :
else:
Если выполнится, то будет запущен блок , а если оно не выполнится — запустится .
- elif — команда для создания сложного условия, когда у нас есть не два исхода, а больше.
if :
elif :
elif :
…
else:
В зависимости от выполнения какого-то из будет запущено соответствующее . Команда else в данном случае не обязательна: если она есть, при невыполнении всех условий выполнится ее тело, а если ее нет — просто не произойдет ничего.
Табуляцию можно проставить либо нажатием клавиши Tab, либо используя несколько идущих подряд пробелов. Традиционно табуляции соответствует 4 пробела. Но нельзя одновременно использовать и пробелы, и Tab — в одном блоке должно быть только что-то одно.
Про табуляцию вообще нельзя забывать и нужно быть с ней аккуратнее:
- если ее проставить неправильно — программа будет выполняться не так, как мы задумали;
- если не проставить совсем — программа не сможет даже запуститься.
А чем вообще может быть условие команды?
Это должна быть такая конструкция, про которую определенно можно сказать, истинна она или ложна. Например, 5 > 1 — истина (True), а 5 > 10 — ложь (False).
Для записи условий в Python предусмотрены как математические операторы сравнения, так и логические операторы:
Математические операторы сравнения работают так же, как и в школьном курсе алгебры. Только обратите внимание, что большинство из них записывается иначе, и могут применяться не только для чисел, а и для других типов данных.
Когда мы попробуем вывести на экран результат выполнения условия, мы увидим, что он может вернуть:
- либо значение True, которое соответствует выполнению записанного условия;
- либо False, соответствующее невыполнению условия.
x = 15
y = 16
print(x == y)
print((y > x) and (x > 5))
Это как раз и есть тот самый тип данных bool из предыдущей части статьи.
А ниже приведен пример кода, в котором разная расстановка отступов дает нам совершенно разное поведение программ.
Циклы. Тип range
Как в программе Python выглядят циклы?
Циклы используются для многократного повторения определенной команды или набора команд. Для выделения тела цикла также используется табуляция.
В Python есть два цикла — while и for.
Цикл while будет повторять команды своего тела до тех пор, пока выполняется условие, записанное для него.
Структура записи этого цикла:
Например, нам нужно уменьшать значение переменной a в 2 раза нацело до тех пор, пока она не станет меньше или равной переменной b. Для этого в условии цикла прописываем сравнение переменных, а в теле цикла — уменьшение значения переменной a. Пока условие выполняется (то есть принимает значение True), будет выполняться тело цикла, а когда оно перестанет выполняться — свою работу продолжит основной блок кода.
a = 1000000
b = 16
while a > b:
a //= 2
print(a)
После первой итерации (запуска содержимого цикла) переменная а будет равна 500 000, после второй — 250 000 и т.п. Итерации будут повторяться, пока будет продолжать быть истинным выражение a > b. Когда итерации цикла завершаются, мы видим итоговое значение переменной а после всех делений — 15.
Бесконечный цикл — ситуация, когда цикл while сам по себе никогда не сможет завершить свою работу, то есть значение его условия никогда не перестанет быть равным True.
Но как вообще можно в него попасть?
- Случайно, когда в записи условия работы цикла была допущена ошибка.
В приведенном примере цикл будет работать до тех пор, пока значение переменной b больше 0. Но никакого изменения этой переменной не происходит, она не меняет своего значения, и, соответственно, никогда не станет меньше или равной 0. А значит, цикл никогда не завершит свою работу.
- Специально. Редко, но это имеет смысл. Например, когда условие работы цикла зависит от большого количества параметров, проще будет прямо в цикле указать, что ему стоит прекратить свою работу.
Для создания бесконечного цикла в условии работы нужно прописать выражение, результат которого всегда будет равен True. Например, это может быть само значение True или условие сравнения 0 == 0, также возвращающее всегда True (0 действительно всегда равен 0).
Для остановки цикла используется команда break. Когда цикл натыкается на нее, он моментально прекращает свою работу. Не сработает и последующий блок кода, не будет и следующего шага цикла — программа сразу перескакивает в основной блок кода после цикла.
В примере мы создали бесконечный цикл, но, как только значение a станет меньше или равным b, выполнится условие if и сработает команда break, которая завершит цикл.
Цикл for необходим для выполнения команды или набора команд определенное количество раз или перебора набора данных.
Этот цикл похож на человека, выкладывающего продукты на кассе в магазине. Сколько бы ни было продуктов в корзине — он каждый достанет из корзины и положит на ленту, перебирая по очереди все продукты.
Структура записи цикла for:
Здесь мы сталкиваемся с понятием коллекции — той самой нашей «корзины с покупками», то есть какой-то структуры данных, содержащей много различных значений в себе. Пока что мы из таких типов структур данных знакомы со строками и списками из первой части статьи, а ниже в этой статье разберем еще одну — range.
Как работает цикл for? На каждом шаге цикла будет принимать новое значение из , после чего будет выполняться .
По традиции, если перебираемая переменная не несет в себе особой смысловой нагрузки, ее называют i, j или k.
может принимать любое значение, которое можно перебрать.
a = «abcd» for i in a: print(i) | Вывод: a b c d |
- перебор списка:
a = [12, 34, 567, 8910] for i in a: print(i) | Вывод: 12 34 567 8910 |
- перебор диапазона range, который создает набор целых чисел.
Команда range позволяет создавать диапазоны — последовательности целых чисел, отличающихся друг от друга на одно и то же число — разницу или шаг диапазона.
Есть несколько способов создания диапазона:
- range(a) — диапазон целых чисел от 0 до (a — 1) с шагом 1.
Например: range(5) — 0, 1, 2, 3, 4.
- range(a, b) — диапазон чисел от a до (b — 1) с шагом 1.
Например: range(2, 7) — 2, 3, 4, 5, 6.
- range(a, b, step) — диапазон чисел от a до (b — 1) с разницей между соседними числами, равной step.
Например: range(1, 17, 3) — 1, 4, 7, 10, 13, 16.
for i in range(2, 6): print(i) | Вывод: 2 3 4 5 |
Взаимозаменяемость циклов
Сейчас мы будем заниматься практикой, а заодно посмотрим, как с помощью разных циклов можно решить одну и ту же задачу.
Задача.
У нас есть список чисел a. Нужно вывести на экран его содержимое, по одному числу в строке.
Решение №1.
Чтобы выполнить задачу, нам необходимо перебрать каким-то циклом все его элементы и каждый вывести на экран. Тогда напрашивается самое очевидное решение:
for i in a:
print(i)
Мы берем каждый элемент списка и выводим его, все просто. Но это не единственный способ.
Решение №2.
Мы можем вместо элементов списка перебирать числа-позиции элементов в списке а и выводить на экран элементы на соответствующих позициях. Это можно сделать, например, так:
for i in range(len(a)):
print(a[i])
Здесь len(a) — это длина списка а. Мы используем ее, чтобы понять, до какого числа надо перебирать i, чтобы на i-тых позициях списка все еще были элементы. Это же можно тоже записать другим способом:
Разные подходы к применению циклов позволяют всегда выбирать наиболее удобный под конкретные задачи. Например, здесь нам не важны позиции элементов списка и проще всего было использовать первое решение. Но в разных контекстах задач могут быть разные преимущества и недостатки каждого из циклов.
Вложенные структуры
После знакомства с условными конструкциями и циклами разброс наших возможностей сильно возрастает. Но он возрастет еще сильнее, если мы научимся правильно их комбинировать и использовать одно в другом.
Для этого можем воспользоваться вложенными структурами, когда одна конструкция находится внутри другой.
Такой пример уже мелькнул — когда мы говорили о бесконечном цикле и команде break. Мы сделали так, что внутри цикла команда break выполнится только при истинности условия, для чего прямо внутри цикла while мы использовали условную конструкцию if.
Чтобы программа «не сошла с ума», пытаясь понять, где тело цикла, а где тело условия, мы продолжили использовать табуляцию.
Весь блок условия находится в цикле, поэтому табуляция цикла никуда не делась. Тело вложенного условия получает свою собственную табуляцию прямо поверх предыдущей. Эти разные табуляции отмечены зеленым и синим цветом.
Вложенные структуры — удобный способ повысить возможности программы. Здесь мы никак не ограничены: мы можем вкладывать циклы в циклы, условия в условия, циклы в условия и так далее. Количество вложений также ничем не ограничено.
Важно запомнить: если друг в друга вкладывается несколько циклов for, их переменные должны иметь разные имена. |
Разберем в качестве примера следующий код:
n = 1
for i in range(3):
for j in range(2):
n += 2
n *= 3
print(n)
Какое число на экране будет в результате этой программы?
У нас есть внутренний цикл и внешний. Тело внутреннего цикла запускается дважды: при j = 0 и j =1. Каждый раз значение n увеличивается на 2. Значит, в процессе работы внутреннего цикла значение n увеличивается на 2 * 2 = 4.
Тогда тело внешнего цикла — прибавление к n 4 и умножение на 3. Цикл повторяется трижды — i принимает значения 0, 1, 2. Тогда после первой итерации внешнего цикла n=(1+4)*3=15, после второй итерации n=(15+4)*3=57, после третьей — n=(57+4)*3=183.
На экран будет выведено 183.
Импорт модулей
Для еще большего увеличения мощи нашей программы мы можем использовать модули — наборы инструментов с готовыми решениями части наших задач.
Это легко сравнить с проведением ремонта в квартире. Мы можем что-то сделать простыми инструментами, которые лежат на балконе. Но гораздо эффективнее будет съездить в магазин за специальными инструментами. Так мы не только шкаф — ракету соберем.
Какие есть модули и какие в них есть инструменты — мы будем изучать по мере необходимости. Сейчас главное — узнать, как именно это делается. И делать мы это будем на примере модуля math, в котором лежит прекрасная функция sqrt. Она умеет извлекать корни чисел.
Если вдруг случилось так, что вы совсем забыли, как извлекаются корни чисел, то советуем обратиться к нашей статье по математике «Понятие корня».
Для получения инструментов модуля необходимо произвести его импорт — добавление модуля или его частей в программу. Сделать это можно несколькими способами:
import math
При такой записи доступ к конкретной функции мы получим, прописав название этого модуля, после него через точку — название необходимой функции.
- Импорт всех функций модуля:
from math import *
При такой записи в нашу программу попадают вообще все функции модуля, для доступа к которым теперь не нужно прописывать название самого модуля.
- Импорт конкретных функций модуля:
from math import sqrt
Такая запись даст нам доступ только к конкретным функциям из всего модуля, которые мы импортируем.
Понимание условий и циклов необходимо для решения любых задач на программирование. Разберем пример задачи №6 ОГЭ.
Дана программа на языке программирования Python:
a = int(input())
b = int(input())
if a == 15 or b == 50:
print(“Да”)
else:
print(“Нет”)
Было проведено 9 запусков. В качестве переменных a и b пользователь вводил следующие значения. Первое значение – переменная a, второе значение – переменная b.
(15; 19); (19; 50); (10; 26); (10; 56); (8; 50); (10; 10); (50; 50); (10; 2); (10; 40).
Определите количество запусков, при которых программа выведет «Да».
Решение.
Заметим, что программа печатает «Да», если a = 15 или b = 50, то есть выполнение хотя бы одного из равенств говорит о том, что программа выведет «Да».
Проверим пары чисел на условия:
— (15; 19) — выполнено a = 15;
— (19; 50) — выполнено b = 50;
— (10; 26) — не выполнено;
-(10; 56) — не выполнено;
— (8; 50) — выполнено b = 50;
— (10; 10) — не выполнено;
— (50; 50) — выполнено b = 50;
— (10; 2) — не выполнено;
— (10; 40) — не выполнено.
Нам подойдут все пары, кроме тех, где написано «не выполнено». Их всего 4 штуки.
Ответ: 4
Существует математическое доказательство того, что с помощью циклов и условий можно реализовать совершенно любой алгоритм. Но использование циклов и условий — только самый базовый уровень программирования, и какие-то сложные вещи нам останутся недоступны.
Это все равно что собирать автомобиль, имея под рукой только листы металла. Дальше вы узнаете про много особенностей языка, упрощающих создание алгоритмов, чтобы заменить эти листы металла на заготовки деталей и прочие более удобные для сборки элементы. Но прежде чем работать с более высокоуровневыми конструкциями, надо попрактиковаться в работе с уже пройденным материалом, например, в этой статье.
Фактчек
- Табуляция — способ структуризации кода, где отдельные блоки кода выделяются отступами.
- Условная конструкция if-elif-else необходима для выполнения определенных блоков кода при определенных исходах условия.
- Циклы нужны для многократного повторения блока кода. Цикл while выполняет блок кода, пока выполняется переданное ему условие; цикл for перебирает переданные ему значения.
- Импортируя модули, мы можем получить доступ к функциям, которые изначально в программе доступны не были.
Проверь себя
Задание 1.
Без запуска кода определите, что будет выведено на экран в результате выполнения программы:
Задание 2.
Без запуска кода определите, что будет выведено на экран в результате выполнения программы:
x = 250
if x < 100:
print(x + 25)
elif x print(x — 100)
Задание 3.
Без запуска кода определите, что будет выведено на экран в результате выполнения программы:
b = 0
for i in range(5):
b = b + i
print(b)
Задание 4.
Без запуска кода определите, что будет выведено на экран в результате выполнения программы:
x = 50
y = 20
while x < y:
x -= 20
print(x)
Ответы: 1. — 4; 2. — 3; 3. — 3; 4. — 3.
Что будет выведено на экран в результате работы программы при x 10 и y 15
Все ранее рассматриваемые программы имели линейную структуру: все инструкции выполнялись последовательно одна за одной, каждая записанная инструкция обязательно выполняется.
Допустим мы хотим по данному числу x определить его абсолютную величину (модуль). Программа должна напечатать значение переменной x, если x>0 или же величину -x в противном случае. Линейная структура программы нарушается: в зависимости от справедливости условия x>0 должна быть выведена одна или другая величина. Соответствующий фрагмент программы на Питоне имеет вид:
x = int(input()) if x > 0: print(x) else: print(-x)
В этой программе используется условная инструкция if (если). После слова if указывается проверяемое условие (x > 0) , завершающееся двоеточием. После этого идет блок (последовательность) инструкций, который будет выполнен, если условие истинно, в нашем примере это вывод на экран величины x . Затем идет слово else (иначе), также завершающееся двоеточием, и блок инструкций, который будет выполнен, если проверяемое условие неверно, в данном случае будет выведено значение -x .
Итак, условная инструкция в Питоне имеет следующий синтаксис:
if Условие: Блок инструкций 1 else: Блок инструкций 2
Блок инструкций 1 будет выполнен, если Условие истинно. Если Условие ложно, будет выполнен Блок инструкций 2 .
В условной инструкции может отсутствовать слово else и последующий блок. Такая инструкция называется неполным ветвлением. Например, если дано число x и мы хотим заменить его на абсолютную величину x , то это можно сделать следующим образом:
x = int(input()) if x < 0: x = -x print(x)
В этом примере переменной x будет присвоено значение -x , но только в том случае, когда x
Для выделения блока инструкций, относящихся к инструкции if или else в языке Питон используются отступы. Все инструкции, которые относятся к одному блоку, должны иметь равную величину отступа, то есть одинаковое число пробелов в начале строки. Рекомендуется использовать отступ в 4 пробела и не рекомедуется использовать в качестве отступа символ табуляции.
Это одно из существенных отличий синтаксиса Питона от синтаксиса большинства языков, в которых блоки выделяются специальными словами, например, нц. кц в Кумире, begin. end в Паскале или фигурными скобками в Си.
2. Вложенные условные инструкции
Внутри условных инструкций можно использовать любые инструкции языка Питон, в том числе и условную инструкцию. Получаем вложенное ветвление – после одной развилки в ходе исполнения программы появляется другая развилка. При этом вложенные блоки имеют больший размер отступа (например, 8 пробелов). Покажем это на примере программы, которая по данным ненулевым числам x и y определяет, в какой из четвертей координатной плоскости находится точка (x,y):
x = int(input()) y = int(input()) if x > 0: if y > 0: # x > 0, y > 0 print("Первая четверть") else: # x > 0, y < 0 print("Четвертая четверть") else: if y >0: # x < 0, y >0 print("Вторая четверть") else: # x < 0, y < 0 print("Третья четверть")
В этом примере мы использовали комментарии – текст, который интерпретатор игнорирует. Комментариями в Питоне является символ # и весь текст после этого символа до конца строки.
3. Операторы сравнения
Как правило, в качестве проверяемого условия используется результат вычисления одного из следующих операторов сравнения: < Меньше — условие верно, если первый операнд меньше второго.
> Больше — условие верно, если первый операнд больше второго.
>= Больше или равно.
== Равенство. Условие верно, если два операнда равны.
!= Неравенство. Условие верно, если два операнда неравны.
Операторы сравнения в Питоне можно объединять в цепочки (в отличии от большинства других языков программирования, где для этого нужно использовать логические связки), например, или .
4. Тип данных bool
Операторы сравнения возвращают значения специального логического типа bool . Значения логического типа могут принимать одно из двух значений: True (истина) или False (ложь). Если преобразовать логическое True к типу int , то получится 1, а преобразование False даст 0. При обратном преобразовании число 0 преобразуется в False , а любое ненулевое число в True . При преобразовании str в bool пустая строка преобразовывается в False , а любая непустая строка в True .
4.1. Логические операторы
Иногда нужно проверить одновременно не одно, а несколько условий. Например, проверить, является ли данное число четным можно при помощи условия (n % 2 == 0) (остаток от деления n на 2 равен 0 ), а если необходимо проверить, что два данных целых числа n и m являются четными, необходимо проверить справедливость обоих условий: n % 2 == 0 и m % 2 == 0 , для чего их необходимо объединить при помощи оператора and (логическое И): n % 2 == 0 and m % 2 == 0 .
В Питоне существуют стандартные логические операторы: логическое И, логическое ИЛИ, логическое отрицание.
является бинарным оператором (то есть оператором с двумя операндами: левым и правым) и имеет вид and . Оператор and возвращает True тогда и только тогда, когда оба его операнда имеют значение True .
является бинарным оператором и возвращает True тогда и только тогда, когда хотя бы один операнд равен True . Оператор “логическое ИЛИ” имеет вид or .
(отрицание) является унарным (то есть с одним операндом) оператором и имеет вид not , за которым следует единственный операнд. Логическое НЕ возвращает True , если операнд равен False и наоборот.
Пример. Проверим, что хотя бы одно из чисел a или b оканчивается на 0:
15 40
a = int(input()) b = int(input()) if a % 10 == 0 or b % 10 == 0: print('YES') else: print('NO')
Проверим, что число a — положительное, а b — неотрицательное:
if a > 0 and not (b < 0):
Или можно вместо not (b < 0) записать (b >= 0) .