Условный оператор. Инструкция if. Урок 5

Ход выполнения программы может быть линейным, т.е. таким, когда выражения выполняются, начиная с первого и заканчивая последним, по порядку, не пропуская ни одной строки кода. Но чаще бывает совсем не так. При выполнении программного кода некоторые его участки могут быть пропущены. Чтобы лучше понять почему, проведем аналогию с реальной жизнью. Допустим, человек живет по расписанию (можно сказать, расписание — это своеобразный "программный код", который следует выполнить). В его расписании в 18.00 стоит поход в бассейн. Однако человеку поступает информация, что воду слили, и бассейн не работает. Вполне логично отменить свое занятие по плаванию. Т.е. одним из условий посещения бассейна должно быть его функционирование, иначе должны выполняться другие действия.

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

Структура условного оператора

Пример ее реализации на языке программирования Python:

if numbig < 100: # если значение переменной numbig меньше 100, то ...
    c = a**b     # возвести значение переменной a в степень b, 
                 # результат присвоить c.

Первая строка конструкции if — это заголовок, в котором проверяется условие выполнения строк кода после двоеточия (тела конструкции). В примере выше тело содержит всего лишь одно выражение, однако чаще их бывает куда больше.

Про Python говорят, что это язык программирования с достаточно ясным и легко читаемым кодом. Это связано с тем, что в нем сведены к минимуму вспомогательные элементы (скобки, точка с запятой), а для разделения синтаксических конструкций используются отступы от начала строки. Учитывая это, в конструкции if код, который выполняется при соблюдении условия, должен обязательно иметь отступ вправо. Остальной код (основная программа) должен иметь тот же отступ, что и слово if. Обычно отступ делается с помощью клавиши Tab.

Основная ветка программы и вложенный код

Можно изобразить блок-схему программы, содержащей инструкцию if, в таком виде:

Блок-схема оператора if

Встречается и более сложная форма ветвления: if–else. Если условие при инструкции ifоказывается ложным, то выполняется блок кода при инструкции else.

Блок-схема конструкции if-else

Пример кода с веткой else на языке программирования Python:

print "Привет"
tovar1 = 50
tovar2 = 32
if tovar1+ tovar2 > 99 :
	print "Сумма не достаточна"
else:
	print "Чек оплачен"
print "Пока"

Практическая работа

  1. Напишите программный код, в котором в случае, если значение некой переменной больше 0, выводилось бы специальное сообщение (используйте функцию print). Один раз выполните программу при значении переменной больше 0, второй раз — меньше 0.
  2. Усовершенствуйте предыдущий код с помощью ветки else так, чтобы в зависимости от значения переменной, выводилась либо 1, либо -1.
  3. Самостоятельно придумайте программу, в которой бы использовалась инструкция if(желательно с веткой else). Вложенный код должен содержать не менее трех выражений.

Создано

Комментарии

можно как то уменьшить код

print ('что одеть')
Temp=int(input("введите значение температуры"))
pogoda=input("дождь-1, снег-2, ветер-3, ясно-4"))
if Temp>20 and pogoda=='дождь':
    print('можете одеть шорты с футболкои, но возьмите зонт')
elif Temp>20 and pogoda=="ясно":
    print ('одеваитесь легко на улице жарко')
elif Temp<=20 and Temp>1 and pogoda=="дождь":
    print('одеваитесь теплее и возмите зонт')
elif Temp<=0 and Temp>=-15 and pogoda=='снег':
    print ('одеваите зимние вещи и бегом на улицу, погода класс!!!')
else:
    print ('сиди дома и молись, возможно конец близок))')

Решил заняться изучением Python, хотел спросить как сделать код цикличным и можно ли его упростить? Хочется сделать цикличным до тех пор пока пользователь не введёт хотя бы 2 буквы

print("Для продолжения работы введите ваше имя!")
uanswer_s = ''
while not uanswer_s.isalpha():
    if uanswer_s: print (u'Введите только буквенные символы')
    uanswer_s = input('Как Вас зовут?')
 
uanswer = str(uanswer_s)
def vvod():
    if len(uanswer) >= 2:
        print ("Вас зовут " + str(uanswer))
    else:
        print("Имя не может состоять из одной буквы")
uanswer=input("И всё же как вас зовут?")
vvod()

Кажется я где то очень запутался.

Ответ на от Олег(olegvolko…

Можно не усложнять:

>>> u = ''
>>> while len(u) < 2:
...   u = input('Имя: ')
... else:
...   print(u)
... 
Имя: 3
Имя: u
Имя: i
Имя: rc
rc

else можно убрать, выводить имя в основной ветке программы. Просто в интерактивном режиме так наглядней.
Если нужно предупреждать, то можно в тело while после ввода имени вставить

...   if len(u) < 2:
...     print('это не имя')

Ответ на от plustilino

u = ''
while len(u) < 2 or not u.isalpha():
	u = input('Имя: ')
	if len(u) < 2:
		print ('Имя жолжно содержать не менее двух символов.')
	if not u.isalpha():
		print ('Имя должно содержать только буквы.')
print('Ваше имя: ', '"', u,'". ', 'Сочувствую.', sep='')

Помогите пожалуйста с последними строками, хотелось бы , что бы программа выдавала следующий результат: "вы не проедете желаемое расстояние, вы поедете *** км", что для этого нужно сделать?

print ("Приветствую!")
rastoyanie = float (input("сколько км вы хотите проехать на автомобиле? "))
rashod = float (input("сколько л топлива расходует машина на 100км? "))
bak_l = float (input("сколько литров топлива в вашем баке? "))
if (bak_l/rashod)*100>=rastoyanie:
    print("Вы проедете желаемое расстояние")
else:
    print ("Вы не проедете желаемое расстояние, вы проедете - ")
    print (bak_l/rashod)*100

Замечание относительно этики программирования: Отступы предпочтительней делать четырьмя пробелами, отступы Tab'ом желательно избегать. Подобные нюансы оговариваются в PEP8.

Вывод кириллицы -- хочу подсказать, как в Питонах, версии которых менее 3.0, безболезненно выводить кириллицу.

Питон 3.0 сразу работает с UTF-8, но его предыдущие версии -- нет. Отсюда проблемы в версиях 2.6, 2.7, ...

Для того, чтобы программы на Питоне могли выводить русские буквочки, нужно в первой строке указать "заклинание":

# coding: utf-8

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

Если получается так, что в вашей программе первой строкой идет:

#! /usr/bin/env python

, то пишите это "заклинание" сразу в следующей после нее строке, то есть -- во второй:

#! /usr/bin/env python
# coding: utf-8

Размещение "заклинания" другими способами и в других местах не окажет на работу программы никакого влияния.

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

В среде Шindows это действительно проблема -- одна кодировка используется для GUI (Graphical User Interface), другая -- для CUI (Command-Line Interface), и преподавателям Паскаля не остается ничего другого, как с молодых ногтей учить детей пользоваться костылями. Красивое решение. Спасибо M$ за ее мудрость!

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

Vvedite znachenie X ...
 
Spasibo chto vam nravitsja takoy sposob napisanija russkikh slov!

Но, господа! Имейте совесть! В Linux-е единая кодировка для консольных программ и для GUI-шных!

Пожалуйста, не учите детей дурному стилю написания программ. Тем более Linux -- это не Виндовз, и здесь нет таких прибабахов.