0% нашли этот документ полезным (0 голосов)
12 просмотров

Pythonlearn 03 Conditional

Загружено:

Nino Rcheulishvili
Авторское право
© © All Rights Reserved
Мы серьезно относимся к защите прав на контент. Если вы подозреваете, что это ваш контент, заявите об этом здесь.
Доступные форматы
Скачать в формате PPTX, PDF, TXT или читать онлайн в Scribd
0% нашли этот документ полезным (0 голосов)
12 просмотров

Pythonlearn 03 Conditional

Загружено:

Nino Rcheulishvili
Авторское право
© © All Rights Reserved
Мы серьезно относимся к защите прав на контент. Если вы подозреваете, что это ваш контент, заявите об этом здесь.
Доступные форматы
Скачать в формате PPTX, PDF, TXT или читать онлайн в Scribd
Вы находитесь на странице: 1/ 33

Обработка условий

Глава 3

Пайтон для всех


www.py4e.com
x=5
Условные шаги
Да
x < 10 ?

Нет print('Меньше') Программа:


Результат:
x=5
Да if x < 10: Меньше
x > 20 ? print('Меньше') Конец
if x > 20:
Нет print('Больше') print('Больше')

print('Конец')

print('Конец')
Операторы сравнения
Пайтон Значение
• Булево / логическое выражение — < Меньше
выражение, результатом вычисления
<= Меньше или равно
которого является либо «Да», либо «Нет».
Этот результат мы затем используем для == Равно
управления ходом программы >= Больше или равно
> Больше
• Булевы выражения используют операторы
сравнения, чтобы вычислить результат: != Не равно
«Истина» / «Ложь» или «Да» / «Нет»
Запомните: "=” — знак присвоения
• Операторы сравнения оценивают
значения переменных, но не меняют их https://ru.wikipedia.org/wiki/Буль,_Джордж
Операторы сравнения
x=5
if x == 5 :
print('Равно 5') Равно 5
if x > 4 :
print('Больше, чем 4') Больше, чем 4
if x >= 5 :
Больше или равно 5
print('Больше или равно 5')
if x < 6 : print('Меньше, чем 6') Меньше, чем 6
if x <= 5 :
print('Меньше или равно 5') Меньше или равно 5
if x != 6 :
print('Не равно 6') Не равно 6
Односторонние решения
x=5 Да
print('Перед 5') Перед 5 x == 5 ?
if x == 5 :
print('Равно 5') Равно 5 Нет print('Равно 5')
print('Все еще 5') Все еще 5
print('Снова 5')
Снова 5 print('Все еще 5')
print('Потом 5')
print('Перед 6') Потом 5
if x == 6 : Перед 6 print('Снова 5')
print('Равно 6')
print('Все еще 6')
print('Снова 6')
print('Потом 6') Потом 6
Отступы
• Увеличивайте отступ после операторов if или for (после символа " : " )

• Сохраняйте отступ, чтобы обозначить блок кода (строки, на которые


влияют операторы if/for)

• Сократите отступ, чтобы вернуться на уровень оператора if или for, и


обозначить конец данного блока кода

• Пустые строки игнорируются и никак не влияют на отступы

• Комментарии к строке сами по себе игнорируются с учетом отступа


Внимание: Не используйте клавишу Tab!
• Редактор Atom автоматически использует пробелы для файлов с расширением
".py" (Приятно!)

• Большинство текстовых редакторов могут преобразовывать таб-отступы в


пробелы. Обязательно включите эту функцию!

- NotePad++: Настройки -> Предпочтения -> Языковое меню/Настройка Отступов

- TextWrangler: TextWrangler -> Настройки -> Настройки редактора по умолчанию

• Пайтон !Очень чувствителен к отступам. Одновременное использование таб-


отступов и пробелов, может привести к «ошибкам отступов». Причем визуально
все может выглядеть правильно
Это сбережет вам
много нервов
Увеличивайте / поддерживайте отступ после if и for.
Сокращайте отступ, чтобы обозначить конец блока.
x=5
if x > 2 :
print('Больше, чем 2')
print('Все еще больше')
print('Закончил с 2')

for i in range(5) :
print(i)
if i > 2 :
print('Больше, чем 2')
print('Закончил с i', i)
print('Готово')
Помните о начале/конце блока
x=5
if x > 2 :
print('Больше, чем 2')
print('Все еще больше')
print('Закончил с 2')

for i in range(5) :
print(i)
if i > 2 :
print('Больше, чем 2')
print('Закончил с i', i)
print('Готово')
Вложенные x>1
да

решения нет print('Больше, чем 1')

x = 42
if x > 1 : да
x < 100
print('Больше, чем 1')
if x < 100 :
нет
print('Меньше 100') print('Меньше 100')
print('Готово')

print('Готово')
Двусторонние
решения x=4

• Иногда мы хотим
сделать одну вещь, нет да
x>2
если логическое
выражение правдиво, и
что-то другое, если оно print('Не больше') print('Больше')
ложно

• Как на развилке дорог,


нужно выбрать один из print('Готово')
путей, но не оба (не
все разом)
Двусторонние решения
x=4
с оператором else:
нет да
x=4 x>2

if x > 2 :
print('Больше') print('Не больше') print('Больше')
else :
print('Меньше')

print('Готово')
print('Готово')
Старайтесь визуально
представить блоки кода x=4

нет да
x=4 x>2

if x > 2 :
print('Больше') print('Не больше') print('Больше')
else :
print('Меньше')

print('Готово')
print('Готово')
Другие условные
структуры…
Несколько условий
да
x<2 print('маленький')

нет
if x < 2 :
да
print('маленький')
x < 10 print('Средний')
elif x < 10 :
print('Средний') нет
else :
print('БОЛЬШОЙ') print('БОЛЬШОЙ')
print('Готово')

print('Готово')
Несколько условий x=0

да
x<2 print('маленький')
x=0
нет
if x < 2 :
да
print('маленький')
x < 10 print('Средний')
elif x < 10 :
print('Средний') нет
else :
print('БОЛЬШОЙ') print('БОЛЬШОЙ')
print('Готово')

print('Готово')
x=5
Несколько условий
да
x<2 print('маленький')
x=5 нет
if x < 2 :
да
print('маленький')
x < 10 print('Средний')
elif x < 10 :
print('Средний') нет
else :
print('БОЛЬШОЙ') print('БОЛЬШОЙ')
print('Готово')

print('Готово')
x = 20
Несколько условий
да
x<2 print('маленький')
x = 20 нет
if x < 2 : да
print('маленький') x < 10 print('Средний')
elif x < 10 :
print('Средний') нет
else :
print('БОЛЬШОЙ') print('БОЛЬШОЙ')
print('Готово')

print('Готово')
Несколько условий
if x < 2 :
print('Маленький')
elif x < 10 :
# Без оператора Else print('Средний')
x=5 elif x < 20 :
if x < 2 : print('Большой')
print('Маленький') elif x < 40 :
elif x < 10 : print('Внушительный')
print('Средний') elif x < 100:
print('Огромный')
print('Готово') else :
print('Гигантский')
Запутанность множества условий
Что никогда не будет выведено
вне зависимости от значения x?
if x < 2 :
print('Меньше 2')
if x < 2 : elif x < 20 :
print('Меньше 2') print('Меньше 20')
elif x >= 2 : elif x < 10 :
print('Два или более') print('Меньше 10')
else : else :
print('Что-то еще') print('Что-то еще')
Конструкция try / except
• Окружайте рискованные блоки кода конструкцией try
(попытаться) и except (за исключением)

• Если код внутри блока try работает, выполнение кода внутри


except пропускается

• Если код внутри try терпит неудачу, программа переходит к


выполнению кода из блока except
$ python3 notry.py
Traceback (most recent call last):
File "notry.py", line 2, in <module>
istr = int(astr)ValueError: invalid literal
for int() with base 10: 'Привет, Боб'

$ cat notry.py
astr = 'Привет, Боб'
istr = int(astr)
Готово
print('Первый', istr)
astr = '123'
istr = int(astr)
print('Второй', istr)
$ python3 notry.py
Traceback (most recent call last):
File "notry.py", line 2, in <module>
istr = int(astr)ValueError: invalid literal
Программа for int() with base 10: 'Привет, Боб'
останавли-
вается $ cat notry.py
здесь astr = 'Привет, Боб'
istr = int(astr) Готово
print('First', istr)
astr = '123'
istr = int(astr)
print('Second', istr)
Программное Типичный
обеспечение
компьютер
Устройства
ввода Центральный
процессор

Вторичная
память

Устройства Основная
вывода память
Программное Типичный
обеспечение
компьютер
Устройства
ввода Центральный
процессор

Вторичная
память

Устройства Основная
вывода память
astr = 'Привет, Боб' Когда первое преобразование терпит
try: неудачу, программа переходит к коду в
istr = int(astr) блоке except и выполнение программы
except: продолжается
istr = -1
$ python tryexcept.py
print('Первый', istr) Первый -1
Второй 123
astr = '123'
try:
istr = int(astr)
except:
istr = -1 Когда второе преобразование
завершается удачно, код в блоке
print('Второй', istr) except игнорируется и выполнение
программы продолжается.
try / except
astr = 'Боб'

print('Привет')
astr = 'Боб'
try:
print('Привет') istr = int(astr)
istr = int(astr)
print('Здесь')
except: print('Здесь')
istr = -1
istr = -1
print('Готово', istr)

print('Готово', istr) подстраховка


Пример использования try / except
rawstr = input('Введите число:')
try:
ival = int(rawstr) $ python3 trynum.py
except: Введите число:42
ival = -1 Отличная работа!
$ python3 trynum.py
if ival > 0 : Введите число:forty-two
print('Отличная работа!') Не является числом
else: $
print('Не является числом')
Резюме
• Операторы сравнения • Вложенные решения
== <= >= > < !=
• Многосторонние решения с
• Отступы использованием оператора elif
• Односторонние решения • try / except для компенсации
ошибок
• Двусторонние решения:
операторы if: и else:
Задание

Перепишите программу расчета заработной платы,


принимая в расчет, что за каждый сверхурочный час
(после того, как отработал больше 40 часов) сотрудник
получает 1,5-кратную ставку.

Введите количество часов: 45


Введите ставку: 10

Оплата: 475.0 475 = 40 * 10 + 5 * 15


Задание

Перепишите программу оплаты с использованием


конструкции try / except, чтобы программа корректно
обрабатывала нечисловой ввод.

Введите количество часов: 20


Введите ставку: девять
Ошибка, пожалуйста, введите числовое значение

Введите количество часов: сорок


Ошибка, пожалуйста, введите числовое значение
Авторы / Благодарности
Авторские права на эти слайды принадлежат Чарльзу Р.
Северансу (www.dr-chuck.com) , 2010 г., Школа Информации ...
Мичиганского Университета и доступны по лицензии Creative
Commons Attribution 4.0 License. Пожалуйста, сохраняйте этот
слайд во всех копиях этого документа, в соответствии с
требованиями Лицензии. Если вы внесли изменения,
добавьте свое имя или организацию в список участников на
этой странице.

Исходная разработка: Чарльз Северанс, Школа


Информации Мичиганского Университета.

Перевод выполнила Фомкина Виолетта.

… Добавьте сюда новых авторов и переводчиков

Вам также может понравиться