# =========================================================
# Тернарный (ternarius) оператор
# =========================================================
"""
* Тернарный (ternarius — «тройной») оператор — операция, возвращающая свой первый или третий операнд в зависимости от значения логического выражения, заданного вторым операндом
* результат 1 если выражение_истинно, иначе результат 2
"""
is_has_name = False
name = 'Max' if is_has_name else 'Empty'
print(name)
is_one = True
number = 1 if is_one else 2
print(number)
# Пример:
password = input ('Введите пароль: ')
print ('Войти' if password == 'secret' else 'Вход запрещен')
# =========================================================
# Генераторы списков
# =========================================================
"""
* В Python существует специальная синтаксическая конструкция, которая позволяет по определенным правилам создавать заполненные списки. Такие конструкции называются генераторами списков.
Применение:
* вместо цикла for
* позволяет писать компактный и читаемый код
* работают быстрее
* [ number for number in numbers if number > 0 ]
"""
# записать в список только положительные числа
numbers = [1, 2, 3, 4, 5, -1, -2, -3]
# классический способ
result = []
for number in numbers:
if number > 0:
result.append(number)
print(result)
# через функцию filter
result = filter(lambda number: number > 0, numbers)
print(list(result))
# через генератор
result = [number for number in numbers if number > 0]
print(result)
# Создаем список из случайных чисел от 1 до 100
import random
numbers = [random.randint(1,100) for i in range(10)]
print (numbers)
# =========================================================
# Принципы работы операторов and и or
# =========================================================
"""
* Все встроенные типы данных в Python приводятся к логическому типу bool по определенным правилам:
Применение:
* Истина: ‘abc’, [1], (1,), {1:’a’}, 10, 1.1, ...
* Ложь: ‘’, [], (), {}, 0, None, ...
Записи логических выражений:
* Вместо if len(str_var) > 0: ...
* Пишем: if str_var: ...
Оператор and:
* Оператор and не проверяет следующее логическое выражение если текущее False (ленивый).
* Оператор and возвращает первый ложный элемент или последний истинный.
Оператор or:
* Оператор or не проверяет следующее логическое выражение если текущее True (ленивый).
* Оператор or возвращает первый истинный элемент или последний ложный.
"""
str = 'abc'
if str:
print('Строка не пустая')
else:
print('Строка пустая')
my_list = [1, 2, 3]
my_dict = {1:'a'}
if my_list and my_dict:
print('Список и словарь не пустые')
else:
print('Список и словарь пустые')
# =========================================================
# Модуль copy
# =========================================================
"""
* !!! При работе со списками стоит помнить, что если мы переприсваиваем список в другую переменную a = b и меняем значения внутри нового списка b[1], значения изменятся и внутри старого списка a[1], т.к. ссылки на элементы списка остаются на своих местах в памяти и каждый список использует одни и те же элементы.
Методы копирования списка:
* Создание среза от начала и до конца списка my_list[:].
* Метод copy у самого списка.
Модуль copy
* Применяется для полного (глубокого) копирования списка.
* Используется функция deepcopy.
* b = copy.deepcopy(a).
"""
my_list = [1, 2, 3]
# копия с помощью среза
b_list = my_list[:]
b_list[1] = 200
print(my_list)
# копия с помощью copy
c_list = my_list.copy()
c_list[1] = 300
print(my_list)
# Для копирования вложенных списков
import copy
myNew_list = [1,2,[1,2]]
myNew_B_list = copy.deepcopy(myNew_list)
myNew_B_list[2][1] = 250
print(myNew_list)
print(myNew_B_list)
# =========================================================
# Обработка исключений
# =========================================================
"""
* !!! Во время выполнения программы могут возникать ситуации, когда состояние внешних данных, устройств ввода-вывода или компьютерной системы в целом делает дальнейшие вычисления в соответствии с базовым алгоритмом невозможными или бессмысленными.
Примеры:
* Деление на 0
* Ошибка чтения данных при отсутствии доступа к ресурсу
Обработка исключений
* try:
* Блок с возможной исключительной ситуацией.
* except:
* Код, который выполняется при возникновении исключительной ситуации.
Перехват конкретных исключений
* В Python каждая исключительная ситуация имеет свой тип.
* TypeError, ValueError, ...
* Самое общее исключение имеет тип Exception.
* Рекомендуется обрабатывать конкретные исключительные ситуации и реагировать на разные исключения по-разному.
try - except - else - finally
* Блок try — код, который может вызвать исключение.
* Блок except — что делать при возникновении исключения.
* Блок else — что делать, если исключения не произошло.
* Блок finally — выполняется всегда.
"""
number = int(input('Введите число: '))
try:
result = 100 / number
except:
print('Деление на 0')
print('Конец')
number = int(input('Введите число: '))
try:
result = 100 / number
except ZeroDivisionError:
print(' Попытка деления на 0')
except Exception:
print('Неизвестная ошибка')
number = int(input('Введите число: '))
try:
#код который может вызвать исключительную ситуацию
result = 100 / number
except:
# что делать если возникла исключительная ситуация
print('Ошибка')
else:
# что делать если ошибок не было
print('Все хорошо ошибок не было')
finally:
# выполнять всегда
print('Что делаем когда есть ошибка и когда ее нет')
Основы Python словами ньюба (Часть 5)
Posted on:April 24, 2023 at 04:40 PM