Для того, чтобы составлять программы, одними последовательными действиями не обойтись. Нужно уметь проверять условия и, в зависимости от результата проверки, поступать тем или иным образом. Тепло ли снаружи? Достиг ли космический корабль предела экрана? Программа может проверять эти условия с помощью оператора if (англ.: если).
Оператор if - то, что нам нужно. if также известен как условный оператор. (Вы можете использовать словосочетание “условный оператор”). if позволяет компьютеру принять решение. Рассмотрим несколько примеров использования оператора if.
Пример выражений if: меньше, больше.
a = 4 b = 5 if a < b: print("a меньше b") if a > b: print("a больше b") |
Этот фрагмент кода на Python интуитивно понятен каждому, кто помнит, что if поанглийски значит "если". Первая часть устанавливает две переменные (a, b) для использования в операторе if. Затем, два условия с if показывают, как сравнить переменные, чтобы увидеть, какая из них больше. В связи с тем, что a меньше b, при запуске программы сработает только вывод данных под первым условием.
Логическое выражение после if называется условием. Если условие истинно, то последующие предложения, имеющие отступ относительно if, выполняются. Если условие ложно, то не выполняются.
Первая строка конструкции if — это заголовок, в котором проверяется условие выполнения строк кода после двоеточия (тела конструкции). В примере выше тело содержит всего лишь одно логическое выражение, однако чаще их бывает куда больше.
Пример выражений if: меньше либо равно, больше либо равно
a = 4 b = 5 if a <= b: print("a меньше либо равно b") if a >= b: print("a больше либо равно b") |
Символы <= и >= должны быть использованы в этом порядке и между ними не должно быть пробела. Например =< не сработает, как не сработает и < =.
Когда такие выражения пишутся в тетрадях, ученики любят использовать символ ≤, например:
# Это не работает if a ≤ b: print("a меньше либо равно b") |
Как утверждает комментарий, этот символ не работает в программе. Так что, когда пишете код, помните использовать <=, а не ≤.
Пример выражений if: равно, не равно
# Равенство if a == b: print("a равно b") # Неравенство if a != b: print("a не равно b") |
Внимание! Частая ошибка
Очень легко спутать == и =. Используйте == если вы проверяете значения на равенство. Используете = в случае присваивания значения переменной. Две наиболее частые ошибки с операторами = и == показаны снизу:
# Это не правильно a == 1 # Это тоже не правильно if a = 1: print("A равен 1") |
Перечитайте ещё раз вышеприведённый пример кода. Сохраните своё время, разобравшись, когда нужно использовать = и ==.
Отступы
Отступы важны. Каждая сдвинутая строка под выражением if будет выполнена только если само выражение if является истинным:
if a == 1:
print("Если a равно единице, то выведется эта строка.") print("А также эта.") print("И эта.")
print("Эта строка всегда будет выводиться на экран.")
Отступы должны быть одинаковыми. Следующий код не работает:
if a == 1:
print("Отступ в два пробела.") print("Отступ в четыре пробела. Покажется ошибка.") print("Компьютер пожелает, чтобы всё было ясно.")
Когда выражение if было выполнено, а затем были использованы строки кода без отступа, невозможно снова сделать отступ и вернуться к нему. Проверка должна быть выполнена ещё раз.
if a == 1:
print("Если a равно единице, то это выведется на экран.") print("Как и это.") print("Это всегда будет выводиться на экран.")
print("Покажется ошибка. Для чего был предназначен этот отступ?")
Про Python говорят, что это язык программирования с достаточно ясным и легко читаемым кодом. Это связано с тем, что в нем сведены к минимуму вспомогательные элементы (скобки, точка с запятой), а для разделения синтаксических конструкций используются отступы от начала строки.
Учитывая это, в конструкции if код, который выполняется при соблюдении условия, должен обязательно иметь отступ вправо. Остальной код (основная программа) должен иметь тот же отступ, что и слово if . Обычно отступ делается с помощью клавиши Tab.
Следующая форма предложения if реализует альтернативное выполнение блоков предложений, в зависимости от результата проверки условия. Это выглядит так:
if x % 2 == 0: print (x, "четное") else: print(x, "нечетное")
Если остаток от деления x на 2 равен 0, значит, x является четным числом, и программа выводит сообщение об этом.
Если же условие оказывается ложным, то выполняется второй блок, следующий за else (англ.: иначе), и выводится сообщение о том, что число нечетное.
Поскольку условие может быть либо истинным либо ложным, будет выполнена только одна из двух альтернатив. Альтернативы называют ветками, потому что они разветвляют поток выполнения.
Задача 1.
Вводятся три целых числа. Определить какое из них наибольшее.
Пояснение к задаче и алгоритм решения:
Пусть a, b, c - переменные, которым присваиваются введенные числа, а переменная m в конечном итоге должна будет содержать значение наибольшей переменной. Тогда алгоритм программы сведется к следующему:
1. Сначала предположим, что переменная a содержит наибольшее значение. Присвоим его переменной m.
2. Если текущее значение m меньше, чем у b, то следует присвоить m значение b.
Если это не так, то не изменять значение m.
3. Если текущее значение m меньше, чем у c, то присвоить m значение c. Иначе ничего не делать.
Код скрипта на языке программирования Python:
# Пример 08.1
# Наибольшее из трех чисел a = int(input("a = ")) b = int(input("b = ")) c = int(input("c = ")) m = a if m < b: m = b if m < c: m = c
print("Наибольшее число:", m)
Примеры выполнения скрипта на языке Python:
a = 3 b = 8 c = 6 Наибольшее число: 8 |
Задача 2.
Вводятся два целых числа. Проверить делится ли первое на второе. Вывести на экран сообщение об этом, а также остаток (если он есть) и частное (в любом случае).
Пояснение к задаче и алгоритм решения:
1. Если первое число нацело делится на второе, то вывести сообщение об этом.
2. Иначе вывести сообщение о том, что первое число не делится на второе, найти остаток от деления и также вывести его.
3. В конце программы найти частное от деления чисел и вывести его.
Код скрипта на языке программирования Python:
# Пример 08.2 # Проверка делимости a на b a = int(input("a = ")) b = int(input("b = ")) if a % b == 0: print("%d делится на %d" % (a, b)) else: print("%d не делится на %d" % (a, b)) print("Остаток: %d" % (a % b)) print("Частное: %d" % (a // b)) |
Примеры выполнения скрипта на языке Python:
a = 678 b = 23 678 не делится на 23 Остаток: 11 Частное: 29 a = 678 b = 3 678 делится на 3 Частное: 226 |
Вводятся два целых числа. Проверить делится ли первое на второе. Вывести на экран сообщение об этом, а также остаток (если он есть) и частное (в любом случае).
Оператор if может проверять несколько условий, связывая их вместе с помощью операторов and (“и”) и or (“или”).
Примеры выражений if, использование "and" и "or"
# and, и, оба условия должны выполняться if a < b and a < c:
print("a меньше, чем b и c")
# or, или, достаточно выполнения одного из условий if a < b or a < c: print("a меньше, чем a или c (или оба)")
Частая ошибка - не использование повторно имени переменной при проверке нескольких условий. Нижеприведённый код не работает, потому что компьютер не знает, что делать с переменной c и что с нею сравнивать. Он не догадается, что нужно сравнить её с a.
# Это не верно if a < b or < c: print("a меньше, чем b и c")
Возможно использовать переменные типа bool вместе с операторами and и or.
Оператор If и тип данных bool a=True b=False if a and b:
print("Оба a и b являются верными")
Возможно, также присваивать переменной результат сравнения. В нижеприведённом коде, сравниваются переменные a и b. Если они равны, c будет равен True, в ином случае c будет False.
Присваивание значений типа Boolean a = 3 b = 3
# Следующая строка кода выглядит странно, но она корректна.
# c будет равен True или False, в зависимости от равенства a и b. c = a == b
# Выводит значение c, в данном случае True print(c)
Запомните: 0 значит False. Всё остальное - True.
Возможно создать выражение if для условия, которое не равняется True или False. Обычно, это не является предпочтительным, но нам важно понять, как компьютер обращается с подобными переменными во время поиска проблем. Следующие выражения корректны, и в итоге каждая строка будет напечатана, потому что значения внутри выражения if не являются равными нулю:
if 1:
print("1") if "A": print("A")
Нижеприведённый код ничего не выведет, потому что значение в выражении if равняется нулю, что расценивается компьютером как False. Любое другое значение расценивается как True.
if 0: print("Ноль")
В нижеприведённом коде, первый if кажется работающим. Проблема в том, что он всегда будет считаться истинным, даже если переменная a не равняется b. Это потому, что b сам по себе считается истинным. a = "c" if a == "B" or "b":
print("a равно b. Возможно.") # Это лучший метод написания выражения if if a == "B" or a == "b": print("a равняется b.")
© ООО «Знанио»
С вами с 2009 года.