Вы находитесь на странице: 1из 30

Random, Import and

Try-Except
Azamat Kibekbaev
Повторение
• Напишите функцию, которая принимает цифру и
возвращает список от 0 до (не включительно) переданной
цифры. Например, если дана цифра 3, то функция должна
возвращать [0,1,2].

• Напишите функцию, вычисляющую площади разных


фигур. Пользователь указывает, площадь какой фигуры он
хочет вычислить. После этого вводит исходные данные.
Например, длину и ширину в случае прямоугольника.
Чтобы разделить поток выполнения на несколько ветвей,
следует использовать оператор if-elif-else
Работа с модулями: создание,
подключение инструкциями import и from

• Модулем в Python называется любой файл с программой.


Каждая программа может импортировать модуль и
получить доступ к его классам, функциям и объектам.
• Подключить модуль можно с помощью инструкции import.

• После ключевого слова import указывается название


модуля. Одной инструкцией можно подключить несколько
модулей, хотя этого не рекомендуется делать, так как это
снижает читаемость кода. Импортируем модули time и
random.
• >>> import time, random
• >>> time.time()
• 1376047104.056417
• >>> random.random()
• 0.9874550833306869
• После импортирования модуля его название становится
переменной, через которую можно получить доступ к
атрибутам модуля. Например, можно обратиться к
константе e, расположенной в модуле math:

• >>> import math
• >>> math.e
• 2.718281828459045
• Если название модуля слишком длинное, или оно вам не
нравится по каким-то другим причинам, то для него можно
создать псевдоним, с помощью ключевого слова as.

• >>> import math as m
• >>> m.e
• 2.718281828459045

• Теперь доступ ко всем атрибутам модуля math осуществляется
только с помощью переменной m, а переменной math в этой
программе уже не будет (если, конечно, вы после этого не
напишете import math, тогда модуль будет доступен как под
именем m, так и под именем math).
• Подключить определенные атрибуты модуля можно с
помощью инструкции from. Она имеет несколько
форматов:

• from <Название модуля> import <Атрибут 1> [ as
<Псевдоним 1> ], [<Атрибут 2> [ as <Псевдоним 2> ] ...]

• from <Название модуля> import *


• Первый формат позволяет подключить из модуля только
указанные вами атрибуты. Для длинных имен также
можно назначить псевдоним, указав его после ключевого
слова as.

• >>> from math import e, ceil as c
• >>> e
• 2.718281828459045
• >>> c(4.6)
• 5
• Напишем свой модуль
• Создаём пустой файл supermodule.py
• Напишем в нем две функции:
• def hi(name):
• return 'Hi, ' + name
•  
• def summ(a,b):
• return a + b
•  
• Создадим в той же папке другой файл. Назовем main.py
• Напишем следующий код:
• import supermodule
•  
• hi = supermodule.hi('Murat')
• print(hi)
•  
• sum_of_two = supermodule.summ(4,2)
• print(sum_of_two)
Практическая работа
• Создайте новый модуль, в котором напишите функцию,
считающую среднее арифметическое 5 чисел. В отдельном
файле напишите программу, которая будет просить
пользователя ввести 5 чисел, после чего будет
использовать созданную вами функцию в отдельном
модуле (import), для вычисления среднего
арифметического 5 чисел. Результат выведите на экран

• Создайте новый модуль с функциями для вычисления


площадей прямоугольника, треугольника и круга. В
отдельном файле напишите программу, которая будет
просить пользователя выбрать один из фигур и Результат
площади выведит на экран...
МОДУЛЬ RANDOM

• Модуль random имплементируют генераторов псевдо-


случайных чисел. Рассмотрим только самые часто
используемые методы random.

• Внимание: При работе с примерами, не забудьте


импортировать модуль: import random

• random.random()
• Возвращает следующее случайное вещественное число,
находящееся в диапазоне от 0 до 1.
• Примеры:
• random.random()
• Для работы с числами:
• random.randrange([start], stop[, step])¶
• Возвращает случайно выбранный элемент из range(start,
stop, step).
• Примеры:
• random.randrange(134)
• random.randrange(1, 100, 2)
•  
• random.randint(a, b)
• Возвращает число N, который больше или равно a, но
меньше или равно b ( a <= N <= b ).
• Пример:
• random.randint(1, 10)
• Для работы с перечислениями:
• random.choice(перечисление)
• Возвращает случайный элемент из переданного перечисления
• Примеры:
• random.choice('this=is+a*test-string')
• random.choice([1,2,3,4,56,76])
•  
• random.shuffle(перечисление)
• На месте перемешивает переданное изменяемое перечисление
• Примеры:
• x = [1,2,3,4,56,76]
• random.shuffle(x)
• print(x)
• y = [x for x in "это пример"]
• random.shuffle(y)
• print(x)
• >>> random.randrange(5, 10)
• 9
• >>> random.randrange(1, 2)
• 1
• >>> random.randrange(10, 20, 3)
• 13
• >>> random.randrange(10, 20, 3)
• 19
• >>> random.randrange(10, 20, 3)
• 10
• >>> random.randint(-100, 10)
• -83
• >>> random.randint(-100, -10)
• -38

• >>> random.random()
• 0.17855729241927576
• >>> random.random()
• 0.3310978930421846
• >>> a = random.random()
• >>> a
• 0.8366142721623201
• >>> round(a, 2)
• 0.84
• >>> round(random.random(), 3)
• 0.629
• Чтобы получать случайные вещественные числа в иных
пределах, отличных от [0; 1), прибегают к математическим
приемам. Так если умножить полученное из random()
число на любое целое, то получится вещественное в
диапазоне от 0 до этого целого, не включая его:

• >>> random.random() * 10
• 2.510618091637596
• >>> random.random() * 10
• 6.977540211221759
Практическая работа

• Используя функцию randrange() получите псевдослучайное


четное число в пределах от 6 до 12. Также получите число
кратное пяти в пределах от 5 до 100.

• Лотерейная игра-сгенерируйте 100 лотерейных билетов и


выберите из них два счастливых билета в качестве победителя.
• Примечание Вы должны соблюдать следующие условия:
• Номер лотереи должен состоять из 10 цифр.
• Все 100 номеров билетов должны быть уникальными.
• Подсказка: Использовать random.randrange() для генерации чисел
и random.sample() чтобы выбрать счастливые 2 билета.
Обработка исключений
• При программировании на Python мы можем столкнуться
с типами ошибок. Первый тип
представляют синтаксические ошибки(syntax error). Они
появляются в результате нарушения синтаксиса языка
программирования при написании исходного кода. При
наличии таких ошибок программа не может быть
скомпилирована. При работе в какой-либо среде
разработки, например, в PyCharm, IDE сама может
отслеживать синтаксические ошибки и каким-либо
образом их выделять.
• >>> 1a = 10
• File "<stdin>", line 1
• 1a = 10
• ^
• SyntaxError: invalid syntax
• Второй тип ошибок представляют ошибки
выполнения (runtime error). Они появляются в уже
скомпилированной программе в процессе ее выполнения.
Подобные ошибки еще называются исключениями.
Например, в прошлых темах мы рассматривали
преобразование числа в строку:

• string = "5"
• number = int(string)
• print(number)
• Данный скрипт успешно скомпилируется и выполнится, так
как строка "5" вполне может быть конвертирована в число.
Однако возьмем другой пример:

• string = "hello"
• number = int(string)
• print(number)

• При выполнении этого скрипта будет выброшено


исключение ValueError, так как строку "hello" нельзя
преобразовать в число.
• Exception – то, на чем фактически строятся все остальные ошибки;
• AttributeError – возникает, когда ссылка атрибута или присвоение не могут быть
выполнены;
• ImportError – возникает, когда оператор import не может найти определение модуля,
или когда оператор не может найти имя файла, который должен быть импортирован;
• IndexError – возникает, когда индекс последовательности находится вне допустимого
диапазона;
• KeyError – возникает, когда ключ сопоставления (dictionary key) не найден в наборе
существующих ключей;
• SyntaxError — возникает, когда синтаксическая ошибка встречается синтаксическим
анализатором;
• TypeError – возникает, когда операция или функция применяется к объекту
несоответствующего типа. Связанное значение представляет собой строку, в которой
приводятся подробные сведения о несоответствии типов;
• ValueError – возникает, когда встроенная операция или функция получают аргумент,
тип которого правильный, но неправильно значение, и ситуация не может описано
более точно, как при возникновении IndexError;
• ZeroDivisionError – возникает, когда второй аргумент операции division или modulo
равен нулю;
• При возникновении исключения работа программы
прерывается, и чтобы избежать подобного поведения и
обрабатывать исключения в Python есть
конструкция try..except, которая имеет следующее
формальное определение:

• try:
•     инструкции
• except [Тип_исключения]:
•     инструкции
• Весь основной код, в котором потенциально может
возникнуть исключение, помещается после ключевого
слова try. Если в этом коде генерируется исключение, то
работа кода в блоке try прерывается, и выполнение
переходит в блок except.
• После ключевого слова except опционально можно
указать, какое исключение будет обрабатываться
(например, ValueError или KeyError). После слова except на
следующей стоке идут инструкции блока except,
выполняемые при возникновении исключения.
• Рассмотрим обработку исключения на примере
преобразовании строки в число:

• try:
•     number = int(input("Введите число: "))
•     print("Введенное число:", number)
• except:
•     print("Преобразование прошло неудачно")
• print("Завершение программы")
• n = input("Введите целое число: ")
• try:
• n = int(n)
• print("Удачно")
• except:
• print("Что-то пошло не так")
• Если ситуация такова, что в программе могут быть сгенерированы
различные типы исключений, то мы можем их обработать по
отдельности, используя дополнительные выражения except:

• try:
•     number1 = int(input("Введите первое число: "))
•     number2 = int(input("Введите второе число: "))
•     print("Результат деления:", number1/number2)
• except ValueError:
•     print("Преобразование прошло неудачно")
• except ZeroDivisionError:
•     print("Попытка деления числа на ноль")
• except Exception:
•     print("Общее исключение")
• print("Завершение программы")
• try:

• if D < 0:

• print ('Заданное уравнение не имеет решений.')

• elif D == 0:

• x = -b / (2 * a)

• print ('x =', x)

• else:

• x1 = (-b + sqrt (D)) / (2 * a)

• x2 = (-b - sqrt (D)) / (2 * a)

• print ('x1 =', x1, 'x2 =', x2)

• except ZeroDivisionError:

• print ('Заданное уравнение не является квадратным, т. к. в нём А = 0.')


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

• Напишите программу, которая запрашивает ввод двух


значений. Если хотя бы одно из них не является числом, то
должна выполняться конкатенация, т. е. соединение, строк. В
остальных случаях введенные числа суммируются.

• Первое значение: 4
• Второе значение: 5
• Результат: 9.0

• Первое значение: a
• Второе значение: 9
• Результат: a9

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