Раздел «Язык Си».CoffeeIfPython:

Предупреждение:

Условные операторы

Задача: Через реку можно переплыть на лодке, которая вмещает K пассажиров.
На берегу стоит N человек и хочет переправиться на другой берег.
Сколько нужно сделать рейсов, чтобы переправить на другой берег всех людей?
1 рейс - это когда лодка плавает туда и обратно.

Чтобы решить задачу, можно придумать математическую формулу.

Придумайте формулу. Проверьте для разных значений N и К.

Проще писать программу так, как думает обычный человек (не математик) :

n, k = map(int, raw_input())

reisov = n/k        # количество рейсов, когда лодка полная
ostalos = n%k       # сколько человек осталось после этого на берегу

if ostalos > 0 :    # если на берегу остались люди
    reisov += 1     # добавить еще 1 рейс с неполной лодкой

print(reisov)       # напечатать количество рейсов 

Как писать условный оператор if:

if условие :
    команды, которые выполняются, если условие True

Условие

Условие может быть либо True (истина, ДА), либо False (ложь, НЕТ).

В условии используются операторы сравнения.

Python Математика Русский
a == b a = b a равно b
a != b a ≠ b a не равно b
a < b a < b a меньше b
a <= b a ≤ b a меньше или равно b (a не больше b)
a > b a > b a больше b
a >= b a ≥ b a больше или равно b (a не меньше b)

ALERT! Нельзя внутри операторов сравнения ставить пробел

ALERT! Правильно <= (меньше или равно), а не =< Как говорим, так и пишем.

Почему равно ==, а присвоить =

ALERT! а=2 - присвоить, a==2 - сравнить

a = 2 или а == 2

а = 2 - это "а присвоить 2".
Операторы для "сравнить" и "присвоить" должны быть разными.
В программе чаще используют "присвоить", поэтому "присвоить" - это один знак =
"равно?" - это два знака == подряд.

if - вычислим модуль числа

Надо: x = |x|.

Решение: Если число отрицательное, возьмем -x.

(Никаких "иначе", "если число положительное" и т.п.)

if x < 0 :
    x = -x

IDEA! Есть функция abs . Можно было написать x = abs(x)

if else - чет/нечет

Надо: Написать четное число (even) или нечетное (odd)

Решение: Проверим, равен ли 0 остаток от деления числа на 2.
Если равен,
то напечатаем EVEN
иначе
напечатаем ODD

if x % 2 == 0 :    # если остаток от деления на 2 равен 0
    print('EVEN') 
else :             # иначе
    print('ODD')

elif - положительное, отрицательное, ноль

Надо: Написать положительное число, отрицательное или ноль.

Решение: Если число > 0
    напечатать 'положительное'
иначе если число < 0
    напечатать 'отрицательное'
иначе (остался ноль)
    напечатать 'ноль'

Можно написать, используя только if и else:

if x > 0 :                    # если больше 0
    print('положительное')
else :                        # иначе меньше или равно 0
    if x < 0 :                # меньше 0
        print('отрицательное')
    else :                    # равно 0
        print('ноль') 

Лучше написать используя elif, чтобы подчеркнуть, что это три разных варианта одной и той же характеристики:

if x > 0 :                    # больше 0
    print('положительное')
elif x < 0 :                  # меньше 0
    print('отрицательное')
else :                        # равно 0
    print('ноль') 

Когда что использовать?

Например, напечатаем все характеристики числа:
- большое (если оно больше 10000000)
- четное или нечетное
- положительное, отрицательное или ноль

                             # характеристика: большой
if x > 1000000 :
    print 'большое'
                             # характеристика: четное / нечетное 
if x % 2 == 0 :              
    print 'четное'
else :
    print 'нечетное'
                             # характеристика: положительное / отрицательное / ноль 
if x > 0 :
    print 'положительное'
elif x < 0 :
    print 'отрицательное'
else :
    print 'ноль'

Краткое содержание

Блоки else и elif не обязательны

if условие :                    
    командыДА

if условие :                     
    командыДА
else :
    командыНЕТ

if условие_1 :                     
    командыДА_1
elif условие_2 :
    командыДа_2

...
elif условие_N :
    командыДа_N
else :
    команды_НЕТ

-- TatyanaDerbysheva - 01 Apr 2016