Условное исполнение
Глава 3
Python for Informatics: Exploring Information
www.pythonlearn.com
Условные шаги
Результат:
Smaller
Finis
Программа:
x = 5
if x < 10:
print 'Smaller’
if x > 20:
print 'Bigger'
print 'Finis'
x = 5
X < 10 ?
print 'Smaller'
X > 20 ?
print 'Bigger'
print 'Finis'
Да
Да
Операторы сравнения
http://en.wikipedia.org/wiki/George_Boole
Запомните! “=” используется для присваивания.
Python | Значение |
< | Меньше чем |
<= | Меньше или равно |
== | Равно |
>= | Больше или равно |
> | Больше чем |
!= | Не равно |
Операторы сравнения
x = 5
if x == 5 :
print 'Equals 5'
if x > 4 :
print 'Greater than 4’
if x >= 5 :
print 'Greater than or Equals 5'
if x < 6 : print 'Less than 6'
if x <= 5 :
print 'Less than or Equals 5’
if x != 6 :
print 'Not equal 6'
Equals 5
Greater than 4
Greater than or Equals 5
Less than 6
Less than or Equals 5
Not equal 6
Односторонние решения
x = 5
print 'Before 5’
if x == 5 :
print 'Is 5’
print 'Is Still 5’
print 'Third 5’
print 'Afterwards 5’
print 'Before 6’
if x == 6 :
print 'Is 6’
print 'Is Still 6’
print 'Third 6’
print 'Afterwards 6'
Before 5
Is 5
Is Still 5
Third 5
Afterwards 5
Before 6
Afterwards 6
X == 5 ?
print 'Is 5'
Да
print 'Still 5'
print 'Third 5'
Нет
Отступ
Внимание! Отключите табуляцию!
А сейчас проверьте настройки табуляции вашего текстового редактора
Это избавит вас от ненужных ошибок
x = 5
if x > 2 :
print 'Bigger than 2'
print 'Still bigger'
print 'Done with 2'
for i in range(5) :
print i
if i > 2 :
print 'Bigger than 2'
print 'Done with i', i
print 'All Done'
увеличение / сохранение отступа после if или for
уменьшение отступа для указания окончания блока
x = 5
if x > 2 :
print 'Bigger than 2'
print 'Still bigger'
print 'Done with 2'
for i in range(5) :
print i
if i > 2 :
print 'Bigger than 2'
print 'Done with i', i
print 'All Done'
Помните о начале/окончании блоков
x > 1
print 'More than one'
x < 100
print 'Less than 100'
print 'All Done'
да
да
нет
x = 42
if x > 1 :
print 'More than one'
if x < 100 :
print 'Less than 100'
print 'All done'
Вложенные решения
нет
Двусторонние решения
x > 2
print 'Bigger'
да
нет
X = 4
print 'Not bigger'
print 'All Done'
Двустороннее решение с использованием
else :
x = 4
if x > 2 :
print 'Bigger'
else :
print 'Smaller'
print 'All done'
x > 2
print 'Bigger'
да
нет
X = 4
print 'Smaller'
print 'All Done'
Двустороннее решение с использованием
else :
x > 2
print 'Bigger'
yes
no
X = 4
print 'Smaller'
print 'All Done'
x = 4
if x > 2 :
print 'Bigger'
else :
print 'Smaller'
print 'All done'
нет
да
Многостороннее решение
if x < 2 :
print 'Small'
elif x < 10 :
print 'Medium'
else :
print 'LARGE'
print 'All done'
x < 2
print 'Small'
да
нет
print 'All Done'
x<10
print 'Medium'
да
print 'LARGE'
нет
Многостороннее решение
x = 0
if x < 2 :
print 'Small'
elif x < 10 :
print 'Medium'
else :
print 'LARGE'
print 'All done'
x < 2
print 'Small'
да
нет
X = 0
print 'All Done'
x<10
print 'Medium'
да
print 'LARGE'
нет
Многостороннее решение
x = 5
if x < 2 :
print 'Small'
elif x < 10 :
print 'Medium'
else :
print 'LARGE'
print 'All done'
x < 2
print 'Small'
да
X = 5
print 'All Done'
x<10
print 'Medium'
да
print 'LARGE'
нет
нет
Многостороннее решение
x = 20
if x < 2 :
print 'Small'
elif x < 10 :
print 'Medium'
else :
print 'LARGE'
print 'All done'
x < 2
print 'Small'
да
X = 20
print 'All Done'
x<10
print 'Medium'
да
print 'LARGE'
нет
нет
Многостороннее решение
# Без else
x = 5
if x < 2 :
print 'Small'
elif x < 10 :
print 'Medium'
print 'All done'
if x < 2 :
print 'Small'
elif x < 10 :
print 'Medium'
elif x < 20 :
print 'Big'
elif x< 40 :
print 'Large'
elif x < 100:
print 'Huge'
else :
print 'Ginormous'
Задача
if x < 2 :
print 'Below 2'
elif x < 20 :
print 'Below 20'
elif x < 10 :
print 'Below 10'
else :
print 'Something else'
if x < 2 :
print 'Below 2'
elif x >= 2 :
print 'Two or more'
else :
print 'Something else'
Какая из инструкций никогда не будет выполнена?
Структура try / except
$ cat notry.py
astr = 'Hello Bob’
istr = int(astr)
print 'First', istr
astr = '123’
istr = int(astr)
print 'Second', istr
$ python 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: 'Hello Bob'
Программа выполнена
$ python 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: 'Hello Bob'
Здесь программа остановится
$ cat notry.py
astr = 'Hello Bob’
istr = int(astr)
print 'First', istr
astr = '123’
istr = int(astr)
print 'Second', istr
Программа выполнена
Программное обеспечение
Устройства ввода
Централь-ный процессор
Основная
память
Устройства вывода
Вспомога- тельная память
Типичный компьютер
$ cat tryexcept.py
astr = 'Hello Bob'
try:
istr = int(astr)
except:
istr = -1
print 'First', istr
astr = '123'
try:
istr = int(astr)
except:
istr = -1
print 'Second', istr
$ python tryexcept.py
First -1
Second 123
При сбое первого преобразования программа переходит к предложению except и выполняется далее
При успешном выполнении второго преобразования программа выполняется, пропустив блок except.
try / except
astr = 'Bob'
astr = 'Bob'
try:
print 'Hello'
istr = int(astr)
print 'There'
except:
istr = -1
print 'Done', istr
print 'Hello'
print 'There'
istr = int(astr)
print 'Done', istr
istr = -1
Подстраховка
Пример try / except
$ python trynum.py
Enter a number:42
Nice work
$ python trynum.py
Enter a number:forty-two
Not a number
$
rawstr = raw_input('Enter a number:')
try:
ival = int(rawstr)
except:
ival = -1
if ival > 0 :
print 'Nice work'
else:
print 'Not a number'
Упражнение
Измените код расчета заработной платы с учетом того, что ставка за сверхурочные часы в полтора раза выше обычной ставки.
Введите часы: 45
Введите ставку: 10
Зарплата: 475.0
475 = 40 * 10 + 5 * 15
Измените код расчета заработной платы с использованием конструкции try ... except на случай, если пользователь введет нечисловые значения.
Введите часы: 20
Введите ставку: девять
Ошибка! Введите числовые значения!
Введите часы: сорок
Ошибка! Введите числовые значения!
Упражнение
Обзор
...
Данная презентация охраняется авторским правом “Copyright 2010- Charles R. Severance (www.dr-chuck.com) University of Michigan School of Information” open.umich.edu и доступна на условиях лицензии 4.0 “С указанием авторства”. В соответствии с требованием лицензии “С указанием авторства" данный слайд должен присутствовать во всех копиях этого документа. При внесении каких-либо изменений в данный документ вы можете указать свое имя и организацию в список соавторов на этой странице для последующих публикаций.
Первоначальная разработка: Чарльз Северанс, Школа информации Мичиганского университета
Здесь впишите дополнительных авторов...
Благодарность / Содействие