- Условный оператор
- Примеры решения задач
- Решение задач
- Задачи питон с проверкой
- Пары чисел с минимальной разностью
- Вложенность слов
- Пробелы
- Прямоугольник в круге
- Буквы-подруги
- Число с плавающей точкой
- Сиракузская последовательность
- Больше, чем сумма?
- Картина, корзина, картонка и маленькая собачонка
- Сборка машинок
Условный оператор
Условный оператор или оператор ветвления — это оператор, конструкция языка программирования, обеспечивающая выполнение определённой команды (набора команд) только при условии истинности некоторого логического выражения, либо выполнение одной из нескольких команд (наборов команд) в зависимости от значения некоторого выражения. Спасибо, Википедия! Такое определение можно найти в любой книге по программированию. Его крайне желательно хотя бы понимать.
Попробую дать более популярное определение: условный оператор выполняет некоторое действие, если указанное условие истинно (равно True).
Вот так выглядит if. else в Python
if True :
print ( ‘Условие истинно, поэтому я напечатаюсь’ )
Приведу пример поинтереснее:
a = 10
b = 5
if a > b:
print ( ‘a больше b равно True ‘ )
Если условие ложно, то код, находящийся под оператором if не выполнится:
a = 3
b = 9999999
if a > b:
print ( ‘Я никогда не напечатаюсь :(‘ )
Дополним предыдущий пример оператором else
a = 3
b = 9999999
if a > b:
print ( ‘Я никогда не напечатаюсь :(‘ )
else :
print ( ‘if не выполнился, так что печатаюсь я’ )
Если условие в if ложно, то выполнится оператор под оператором else
Приведу еще несколько примеров:
# Вывести большее из двух чисел,
# введенных с клавиатуры
a = int ( input ())
b = int ( input ())
if a > b:
print ( ‘Большее число a = ‘ + str (a))
else :
print ( ‘Большее число b = ‘ + str (b))
# Проверить число a на четность
a = int ( input ())
if a % 2 == 0 :
print ( ‘четное’ )
else :
print ( ‘нечетное’ )
Иногда двух вариантов недостаточно, для этого существует оператор elif, а для все остального есть.
age = int ( input ())
if age 10 :
print ( ‘Ваш возраст — это одна цифра :)’ )
el if age 15 :
print ( ‘Геометрия — это жестко (хочу обратно в началку)’ )
else :
print ( ‘В школе было круто’ )
В приведенном выше примере, есть три варианта развития событий, но это не значит, что мы ограничены в количестве дополнительных условий.
a = int ( input ( ‘Введите число от одного до 1 до 100 ‘ ))
if a 10 :
print ( ‘Ваше число меньше 10 ‘ )
el if a 20 :
print ( ‘Ваше число меньше двадцатки’ )
el if a 30 :
print ( ’30 — это потолок’ )
el if a 40 :
print ( ‘Ваше число меньше 40 ‘ )
el if a 50 :
print ( ‘Много, но не больше полтинника’ )
el if a 60 :
print ( ‘Число меньше, чем шесть*десять’ )
el if a 70 :
print ( ‘Ваше число расположено в восьмом десятке’ )
el if a 80 :
print ( ‘Ваше число меньше 80’ )
el if a 90 :
print ( ‘Ваше число находится в 9 десятке’ )
el if a 100 :
print ( ‘Сотня больше вашего числа’ )
else :
print ( ‘Хитро, но меня не обманешь, число слишком большое’ )
Да, мне нечем было заняться, ну и что? Никогда не делайте так, как написано в примере выше. Если в вашем коде больше трех elif значит что-то не так и стоит придумать новый алгоритм. Давайте еще разок: много elif — плохо!
Примеры решения задач
Проверить является ли клетка шахматной доски белой
# Два числа выбираются случайным образом (координаты клетки шахматного поля, от 1 до 8)
# Вывести YES, если клетка белая, и NO, если клетка черная
from random import randint
x = randint (1 ,8 )
y = randint (1 ,8 )
print (x, y)
if (x + y) % 2 == 1 :
print ( ‘YES’ )
else :
print ( ‘NO’ )
Во втором случаем числа вводятся с клавиатуры
x = int ( input ( ‘Введите координату x: ‘ ))
y = int ( input ( ‘Введите координату y: ‘ ))
if (x + y) % 2 == 1 :
print ( ‘YES’ )
else :
print ( ‘NO’ )
Проверить может ли слон ходить с первой шахматной на вторую
# Четыре числа выбираются случайным образом (координаты клетки шахматного поля, от 1 до 8)
# Вывести YES, если ладья может сходить с первой клетки на вторую, и NO, если не может
# Напомню, что ладья ходит так:
# Л ——X
# |
# |
# |
# X
from random import randint
x1 = randint (1 , 8 )
x2 = randint (1 , 8 )
y1 = randint (1 , 8 )
y2 = randint (1 , 8 )
print (x1, y1)
print (x2, y2)
if x1 == x2 and y1 != y2 or x1 != x2 and y1 == y2:
print ( ‘YES’ )
else :
print ( ‘NO’ )
То же самое, но с помощью ввода с клавиатуры
x1 = int ( input ( ‘Введите координату x1: ‘ ))
x2 = int ( input ( ‘Введите координату y1: ‘ ))
y1 = int ( input ( ‘Введите координату x2: ‘ ))
y2 = int ( input ( ‘Введите координату y2: ‘ ))
if x1 == x2 and y1 != y2 or x1 != x2 and y1 == y2:
print ( ‘YES’ )
else :
print ( ‘NO’ )
Решение задач
1. Пользователь вводит два целых числа. Выведите меньшее из них.
2. Пользователь вводит свое имя и возраст. Если возраст пользователя больше 18, то вывести строку «Добрый вечер, name! Вы совершеннолетний, поздравляем!», иначе вывести строку «Привет, name! Приносим извинения, но вы не можете гулять после 22:00». Пример:
# name = ‘Ivan’
# age = 21
>>> Добрый вечер, Ivan! Вы совершеннолетний, поздравляем!
# name = ‘Max’
# age = 14
>>> Привет, Max! Приносим извинения, но вы не можете гулять после 22:00
3. Пользователь вводит три строки. Одна из них равна строке «Python», выведите номер этой строки.
4. Пользователь вводит три целых числа. Два из них равны друг другу. Выведите третье число, не равное остальным. Если среди введенных чисел не оказалось двух равных друг другу, выведите строку «Ошибка».
5. Пользователь вводит целое число. Проверьте является ли это число четырехзначным, если является, то выведите строку «Успешно», иначе «Неудача».
6. Пользователь вводит целое число — текущее время в часах. Если количество часов находится между 7 и 10, то программа должна вывести строку «Пора вставать!», иначе выведется строка «Ты проспал!». Если введенное число отрицательно или больше 23, то программа должна вывести строку «Ошибка».
7. Пользователь вводит текущее время в часах. Если количество часов находится в диапазоне от 0 до 7, то программа выводит строку «Ночь». Если часовая стрелка находится между 7 и 11, то выведется строка «Утро». От 12 до 17 выведется строка «День». Если текущее время находится между 17 и 23, то программа должна вывести строку «Вечер». В случае, когда введенное число отрицательно или превосходит 23, программа должна вывести строку «Ошибка».
8. Пользователь вводит строку — название времени года. Если введенная строка — это лето, то выведите строку «Тополинный пух, жара, июль», если зима, то «Снеговик, снежки и горка», если осень, то «Пора в школу!», если весна, то «Весенняя капель». В случае, если введенная строка не равна ни одному из предложенных вариантов, программа должна выводить строку «Ошибка».
9. Пользователь вводит целое число — номер месяца своего рождения. Выведите строку «Вы родились летом», если номер месяц совпадает с номером одного из летних месяцев. Если номер месяца совпал с номером одного из зимних месяцев, то нужно вывести «К холодам вам не привыкать». Для людей, которые празднуют свой день рождения осенью выведите «Я тоже люблю осенний листопад». Если весна ваше время года выведите строку «Подснежник». В случае, если введенное число меньше единицы или больше 12, выведите строку «Ошибка».
10. Пользователь вводит номер года своего рождения. Если этот год является високосным выведите «Вы случайно родились не 29 февраля?», иначе выведите «Ничего необычного».
Для справки, в високосном году 366 дней, а в обычном — 365. Номер високосного года, делится на 4, за исключением номеров тех годов, которые делятся на 100 и не делятся на 400 (например, годы 300, 1300 и 1900 не являются високосными, а 1200 и 2000 — являются).
11. Пользователь вводит целое число. Выведите его строку-описание вида «отрицательное четное число», «нулевое число», «положительное нечетное число», например, численным описанием числа 190 является строка «положительное четное число».
12. Дано целое число, лежащее в диапазоне от 1 до 999. Если число двузначное, выведите строку «Двузначное», если число содержит одну значащую цифру, то выведите строку «Цифра», если число является трехзначным выведите «Трехзначное». В случае, если введенное число меньше 0 или больше 999, выведите строку «Ошибка!».
13. Шахматный король ходит по горизонтали, вертикали и диагонали, но только на 1 клетку. Даны две различные клетки шахматной доски, определите, может ли король попасть с первой клетки на вторую одним ходом. Программа получает на вход четыре числа от 1 до 8 каждое, задающие номер столбца и номер строки сначала для первой клетки, потом для второй клетки. Программа должна вывести YES, если из первой клетки ходом короля можно попасть во вторую или NO в противном случае. В случае, если хотя бы одно из введенных чисел не лежит в диапазоне от 1 до 8, выведите строку «Ошибка!».
14. Шахматный ферзь ходит по диагонали, горизонтали или вертикали. Даны две различные клетки шахматной доски, определите, может ли ферзь попасть с первой клетки на вторую одним ходом. В случае, если хотя бы одно из введенных чисел не лежит в диапазоне от 1 до 8, выведите строку «Ошибка!».
15. Шахматный конь ходит буквой «Г» — на две клетки по вертикали в любом направлении и на одну клетку по горизонтали, или наоборот. Даны две различные клетки шахматной доски, определите, может ли конь попасть с первой клетки на вторую одним ходом. В случае, если хотя бы одно из введенных чисел не лежит в диапазоне от 1 до 8, выведите строку «Ошибка!».
16. Треугольник существует только тогда, когда сумма любых двух его сторон больше третьей. Дано a, b, c — стороны предполагаемого треугольника. Требуется сравнить длину каждого отрезка-стороны с суммой двух других. Если хотя бы в одном случае отрезок окажется больше суммы двух других, то треугольника с такими сторонами не существует.
Задачи питон с проверкой
Пары чисел с минимальной разностью
Напишите функцию, которая будет принимать список чисел и возвращать два числа, абсолютная разность которых минимальна. Пару чисел нужно вернуть в виде списка, отсортированного по возрастанию.
Вложенность слов
Напишите функцию, которая будет принимать начальное слово и итоговую строку и возвращать уровень вложенности.
Пробелы
В предложение были добавлены лишние пробелы. Напишите функцию, которая будет принимать такое предложение и возвращать его же в исправленном виде.
Прямоугольник в круге
Напишите функцию, которая будет принимать три числа: ширину и высоту прямоугольника и радиус круга и возвращать True, если прямоугольник может поместиться в круг.
Буквы-подруги
Напишите функцию, которая будет принимать строку и две буквы. Функция должна проверять, всегда ли после первой переданной буквы идет вторая.
Число с плавающей точкой
Создайте регулярное выражение для проверки того, является ли строка валидным числом с плавающей точкой. Обратите внимание: написать нужно паттерн, а не функцию.
Сиракузская последовательность
Сиракузская последовательность генерируется следующим образом. Берем любое натуральное число n. Если оно четное, то делим его на 2, а если нечетное, то умножаем на 3 и прибавляем 1 (получаем 3n + 1).
Больше, чем сумма?
Напишите функцию, которая будет принимать список чисел и проверять, является ли каждое число больше суммы всех предыдущих чисел.
Картина, корзина, картонка и маленькая собачонка
Напишите функцию, которая будет принимать словарь и строку — кличку собаки (в нижнем регистре). Ключами словаря будут названия пропавших вещей (и кличка собаки, если она пропала), а значениями — их стоимость.
Сборка машинок
Вы занимаетесь сборкой игрушечных машинок. Каждая машинка должна иметь четыре колеса, один корпус и две фигурки человечков внутри.