Слайд 1ОСНОВЫ
ПРОГРАММИРОВАНИЯ
НА ЯЗЫКЕ
PYTHON
(часть#3)
(Лекция 13)
Слайд 2ИНСТРУКЦИИ ЦИКЛА В PYTHON
Инструкция цикла for
Функция range
Инструкция цикла while
ОБРАБОТКА
ИСКЛЮЧЕНИЙ В PYTHON
Слайд 3ИНСТРУКЦИИ ЦИКЛА В PYTHON
num = [0.8, 7.0, 6.8, -6]
for i
in num:
print(i, '- number')
=== RESTART: C:/Users/GSL/AppData/Local/Programs/Python/Python37-32/uu.py ===
0.8 -
number
7.0 - number
6.8 - number
-6 - number
>>>
Слайд 4for i in [1, 2, 'hi']:
print(i)
=== RESTART: C:/Users/GSL/AppData/Local/Programs/Python/Python37-32/uu.py
===
1
2
hi
>>>
Слайд 5Цикл for работает и для строк
for i in 'hello':
print(i)
h
e
l
l
o
>>>
По аналогии со списком для строк перебираются все символы
строки.
В общем виде запись цикла for для заданной строки:
Слайд 6Цикл for позволяет не только выводить элементы строки или списка
на экран, но и производить над ними определенные операции:
num =
[0.8, 7.0, 6.8, -6]
for i in num:
if i == 7.0:
print(i, '- число 7.0')
Слайд 7country = "Russia"
for ch in country:
if ch.isupper():
print(ch)
=== RESTART: C:/Users/GSL/AppData/Local/Programs/Python/Python37-32/uu.py ===
R
>>>
#строковый метод isupper проверяет
верхний регистр символа (С БОЛЬШОЙ ЛИ ОН БУКВЫ?), возвращает True или False.
Слайд 8Функция range
Достаточно часто при разработке программ необходимо получить последовательность (диапазон)
целых чисел:
Для решения этой задачи в Python предусмотрена функция range,
создающая последовательность (диапазон) чисел. В качестве аргументов функция принимает: начальное значение диапазона (по умолчанию 0), конечное значение (не включительно) и шаг (по умолчанию 1).
Слайд 9>>> for i in range (5):
print(i)
0
1
2
3
4
Слайд 10for i in range(0, 10, 1):
print(i, end=' ')
0
1 2 3 4 5 6 7 8 9
for
i in range(10):
print(i, end=' ')
0 1 2 3 4 5 6 7 8 9
for i in range(2, 20, 2):
print(i, end=' ')
2 4 6 8 10 12 14 16 18
for i in range(20, 2, -2):
print(i, end=' ')
20 18 16 14 12 10 8 6 4
Слайд 11Теперь с помощью диапазона найдем сумму чисел на интервале от
1 до 100:
>>> total=0
>>> for i in range(1,101)
SyntaxError: invalid syntax
>>>
for i in range(1,101):
total+=i
>>> total
5050
>>>
Слайд 12>>> for i in 'hello world':
... print(i *
2, end='')
...
hheelllloo wwoorrlldd
Слайд 13>>> for i in 'hello world':
... if i
== 'o':
... continue
... print(i
* 2, end='')
...
hheellll wwrrlldd
Слайд 14>>> for i in 'hello world':
... if i
== 'o':
... break
... print(i
* 2, end='')
...
hheellll
Слайд 15>>> for i in 'hello world':
... if i
== 'a':
... break
... else:
...
print('Буквы a в строке нет')
...
Буквы a в строке нет
Слайд 16a = int(input())
if a < -5:
print('Low')
elif -5
a
Слайд 17>>> # Измерим несколько строк:
... words = ['cat', 'window', 'defenestrate']
>>>
for w in words:
... print(w, len(w))
...
cat 3
window 6
defenestrate
12
Слайд 18>>> a = ['Mary', 'had', 'a', 'little', 'lamb']
>>> for i
in range(len(a)):
... print(i, a[i])
...
0 Mary
1 had
2 a
3 little
4
lamb
Слайд 20Диапазон, создаваемый функцией range, часто используется для задания индексов. Например,
если необходимо изменить существующий список, умножив каждый его элемент на
2.
Необходимо пройти в цикле по всем элементам списка lst, для этого перебираются и изменяются последовательно элементы списка через указание их индекса. В качестве аргумента range задается длина списка. В этом случае создаваемый диапазон будет от 0 до len(lst)-1. Python не включает крайний элемент диапазона, т.к. длина списка всегда на 1 больше, чем индекс последнего его элемента, т.к. индексация начинается с нуля.
lst = [4, 10, 5, -1.9]
print(lst)
for i in range(len(lst)):
lst[i] = lst[i] * 2
print(lst)
[4, 10, 5, -1.9]
[8, 20, 10, -3.8]
Слайд 21Вложенные циклы
Циклы можно вкладывать друг в друга.
outer = [1, 2,
3, 4] # внешний цикл
inner = [5, 6, 7, 8]
# вложенный (внутренний) цикл
for i in outer:
for j in inner:
print('i=', i, 'j=', j)
Слайд 24Инструкция цикла while
Цикл for используется, если заранее известно, сколько повторений
необходимо выполнить (указывается через аргумент функции range или пока не
закончится список/строка).
Если заранее количество повторений цикла неизвестно, то применяется другая конструкция, которая называется циклом while.
Слайд 27>>> i = 5
>>> while i < 15:
...
print(i)
... i = i + 2
...
5
7
9
11
13
Слайд 28while True:
text = input("Введите число или стоп для
выхода: ")
if text == "стоп":
print("Выход из программы! До встречи!")
break # инструкция выхода из цикла
elif text == '1':
print("Число 1")
else:
print("Что это?!")
Введите число или стоп для выхода: 1
Число 1
Введите число или стоп для выхода: стоп
Выход из программы! До встречи!
>>>
Слайд 29s = 'aa3aBbb6ccc'
total = 0
for i in range(len(s)):
if
s[i].isalpha(): # посимвольно проверяем наличие буквы
continue
# инструкция перехода к следующему шагу цикла
total=total+int(s[i]) #накапливаем сумму, если встретилась цифра
print("сумма чисел:", total)
==== RESTART: C:/Users/GSL/AppData/Local/Programs/Python/Python37-32/ц.py ====
сумма чисел: 9
Слайд 30ОБРАБОТКА ИСКЛЮЧЕНИЙ В PYTHON
x = int(input())
print(5/x)
3
1.6666666666666667
>>>
==== RESTART: C:/Users/GSL/AppData/Local/Programs/Python/Python37-32/g.py ====
0
Traceback
(most recent call last):
File "C:/Users/GSL/AppData/Local/Programs/Python/Python37-32/g.py", line 2, in
print(5/x)
ZeroDivisionError: division by zero
>>>
Слайд 31Можно осуществить прямую проверку вводимого с клавиатуры значения:
x = int(input())
if
x==0:
print("Error!")
else:
print(5/x)
==== RESTART: ====
9
0.5555555555555556
>>>
==== RESTART:
0
Error!
>>>
Слайд 32try:
x = int(input("Enter number: "))
print(5/x)
except:
print("Error ")
==== RESTART: Enter number: 1
5.0
>>>
==== RESTART: Enter number:
0
Error
>>>
==== RESTART: Enter number: h
Error
>>>
Слайд 33>>> 7/0
Traceback (most recent call last):
File "", line 1,
in
7/0
ZeroDivisionError: division by zero
>>> int("y")
Traceback (most recent
call last):
File "
", line 1, in
int("y")
ValueError: invalid literal for int() with base 10: 'y'
>>>
Слайд 34try:
x = int(input("Enter number: "))
print(5/x)
except ZeroDivisionError:
# указываем тип исключения
print("Error dividing by zero")
except ValueError:
print("Error converting to a number")
Enter number: 7
0.7142857142857143
>>>
==== RESTART: ====
Enter number: 0
Error dividing by zero
>>>
==== RESTART: ====
Enter number: f
Error converting to a number
>>>
Слайд 35try:
x = int(input("Введите число: "))
print(5/x)
except ZeroDivisionError
as z:
print("Обрабатываем исключение - деление на нуль!")
print(z) # выводим на экран информацию об исключении ZeroDivisionError
except ValueError as v:
print("Обрабатываем исключение - преобразование типов!")
print(v)
else:
print("Выполняется, если не произошло исключительных ситуаций!")
finally:
print("Выполняется всегда и в последнюю очередь!")
Слайд 36==== RESTART: C:/Users/GSL/AppData/Local/Programs/Python/Python37-32/g.py ====
Введите число: 2
2.5
Выполняется, если не произошло исключительных
ситуаций!
Выполняется всегда и в последнюю очередь!
>>>
==== RESTART: C:/Users/GSL/AppData/Local/Programs/Python/Python37-32/g.py ====
Введите
число: 0
Обрабатываем исключение - деление на нуль!
division by zero
Выполняется всегда и в последнюю очередь!
>>>
==== RESTART: C:/Users/GSL/AppData/Local/Programs/Python/Python37-32/g.py ====
Введите число: r
Обрабатываем исключение - преобразование типов!
invalid literal for int() with base 10: 'r'
Выполняется всегда и в последнюю очередь!
>>>