Проверка условий

В программировании можно проводить различные проверки, которые позволяют управлять ходом программы. Для этого предусмотрены конструкции вида:

if какое_то_условие:
    сделать действие1

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

запросить y пользователя значение x
преобразовать x в число

если x больше 0 то
    напечатай  "число положительное"

на python получим такой код:

x = input("Введите X")
x = int(x)

if x > 0:
    print("число положительное")

тут важный момент что print(“число положительное”) должен иметь отступ в 4 пробела, то есть чтобы визуально выглядело будто print лежит внутри конструкции if

if-ов может быть сколько угодно, например, если мы хотим проверить число сразу на положительность и на отрицательность. На русском будет так:

запросить y пользователя значение x
преобразовать x в число

если x больше 0 то
    напечатай  "число положительное"
		
если x меньше 0 то
    напечатай  "число отрицательное"		

на python вот так:

x = input("Введите X")
x = int(x)

if x > 0:
    print("число положительное")
		
if x < 0:
    print("число отрицательное")

Взаимоисключающие условия

Допустим мы хотим сравнить число с несколькими другими числами. Допустим с 5 и 10. И хотим, чтобы

  • если число больше 10 программа написала “число больше 10”,
  • если больше либо равно 5, но меньше либо равно 10 написало “число между 5 и 10”
  • ну и если число меньше 5 написало “число меньше 5”

тогда на русском будем действовать как-то так:

запросить y пользователя значение x
преобразовать x в число

если x больше 10 то
    напечатай  "число больше 10"
		
если x больше либо равно 5 и x меньше либо равно 10 то
    напечатай  "число между 5 и 10"
		
если x меньше 5 то
    напечатай  "число меньше 5"	

на программистском

x = input("Введите X")
x = int(x)

if x > 10:
    print("число больше 10")
		
# ниже используется проверка сразу на два условия, 
# которые объединены через оператор and, то есть типа: <условие1> and <условие2>
# в принципе так можно объединить сколько угодно условий <условие1> and <условие2> and <условие3>
if x >= 5 and x <= 10:  
    print("число между 5 и 10")
		
if x < 5:
    print("число меньше 5")

если присмотреться, то все эти условия взаимоисключающие, то есть нет смысла проверять второй if, если выполнится первый. Поэтому мы можем объединить все эти if в один мега-if, который будет проверять условия до первого выполняющегося, и не будет проверять лишних, выглядеть это будет вот так:

if x > 10:
    print("число больше 10")
elif x >= 5 and x <= 10:  
    print("число между 5 и 10")		
elif x < 5:
    print("число меньше 5")

то есть мы заменили два последних if на elif, что расшифровывается как else if (с англ. иначе если). На человеческом получится что-то вроде:

если x больше 10 то
     напечатай "число больше 10"
иначе если x больше либо равно 5 и x меньше либо равно 10 то
     напечатай "число между 5 и 10"
иначе если x < 5 то
     напечатай "число меньше 5"

теперь если приглядятся на нашу конструкцию еще внимательнее, то увидим, что последнее условия выполняется всегда, если не выполнились первые два.

Для таких условий в программировании предусмотрена конструкцию else (с англ. иначе).

То есть мы можем переформулировать нашу конструкцию в

если x больше 10 то
     напечатай "число больше 10"
иначе если x больше либо равно 5 и x меньше либо равно 10 то
     напечатай "число между 5 и 10"
иначе
     напечатай "число меньше 5"

на python это получится вот так:

if x > 10:
    print("число больше 10")
elif x >= 5 and x <= 10:  
    print("число между 5 и 10")		
else:
    print("число меньше 5")

Упрощаем условие

Кстати, если присмотреться к первым двум условиям мы увидим, что если оказалось, что x не больше 10, то есть первое условие не выполнилось, то это гарантирует нам что x <= 10, а это означает что мы можем упростить условие 2, до вида x больше либо равно 5 и получим на русском:

если x больше 10 то
     напечатай "число больше 10"
иначе если x больше либо равно 5 то
     напечатай "число между 5 и 10"
иначе
     напечатай "число меньше 5"

код будет такой:

if x > 10:
    print("число больше 10")
elif x >= 5:  
    print("число между 5 и 10")		
else:
    print("число меньше 5")

Ну и уточню, что конструкция if/elif/else это не то же самое что три if-а. Если запустить код выше, то получим вполне корректное поведение:

а теперь попробуем заменить elif на if, то есть таким образом преобразовав его в две конструкции if и if/else:

if x > 10:
    print("число больше 10")
if x >= 5:  
    print("число между 5 и 10")		
else:
    print("число меньше 5")

запускаем и получаем

Вложенные конструкции

В принципе, один блок if может находится внутри другого блока if, правда тогда отступы надо увеличивать на 4 пробела соответственно.

Например, мы можем переписать код выше используя только if и else. Для этого переформулируем нашу фразу

если x больше 10 то
    напечатай "число больше 10"
иначе
    если x больше либо равно 5 и x меньше либо равно 10 то
         напечатай "число между 5 и 10"
    иначе
         напечатай "число меньше 5"

в коде получим

if x > 10:
    print("число больше 10")
else
    if x >= 5 and x <= 10:  
        print("число между 5 и 10")		
    else:
        print("число меньше 5")

иногда такое может пригодится

Проверка на равенство

У нас в примере не было равенства. Поэтому просто уточню. Чтобы проверить число на равенство с другим числом надо использовать ДВОЙНОЕ равно ==

if x == 10:
    print("Число равно 10")

а если хочется наооборот проверить что число не равняется чему-то можно использовать два варианта, так

if not x == 10:
    print("Число не равно 10")

либо так

if x  != 10:
    print("Число не равно 10")

Теперь попробуйт сделать задание

Задание

Запросить у пользователя число и

  • вывести на экран “число положительное”, если число больше нуля,
  • “число отрицательное”, если число меньше нуля
  • и “это ноль” если ложно и первое и второе условие.