/
azazzello85
/
python_learning
Обзор
Документация
Войти
/
azazzello85
/
python_learning
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
DZ_6.py
98 строк
4 KB
azazzello85
dz 6
23 фев 2025, 17:30
23 фев 2025, 17:30
2c5abef
Код
Авторство
О чём код?
#Задание 1 '''Печатные газеты использовали свой формат дат для каждого выпуска. Для каждой газеты из списка напишите формат указанной даты для перевода в объект datetime: The Moscow Times — Wednesday, October 2, 2002 The Guardian — Friday, 11.10.13 Daily News — Thursday, 18 August 1977''' import datetime as dt date = dt.datetime.strptime('Wednesday, October 2, 2002','%A, %B %d, %Y') print (date, type(date)) date = dt.datetime.strptime('Friday, 11.10.13','%A, %d.%m.%y') print (date, type(date)) date = dt.datetime.strptime('Thursday, 18 August 1977','%A, %d %B %Y') print (date, type(date)) #Задание 2 '''Дан поток дат в формате YYYY-MM-DD, в которых встречаются некорректные значения: stream = [‘2018-04-02’, ‘2018-02-29’, ‘2018-19-02’] Напишите функцию, которая проверяет эти даты на корректность. То есть для каждой даты возвращает True — дата корректна или False — некорректная.''' stream = ['2018-04-02', '2018-02-29', '2018-19-02'] import datetime as dat def is_dt_correct(dt): try: dat.datetime.strptime(dt, '%Y-%m-%d') print(dt, 'Корректная дата') except: print(dt, 'Некорректная дата') for dt in stream: is_dt_correct(dt) #Задание 3 '''Напишите функцию date_range, которая возвращает список дат за период от start_date до end_date. Даты должны вводиться в формате YYYY-MM-DD. В случае неверного формата или при start_date > end_date должен возвращаться пустой список.''' import datetime as dat def date_range(start_date, end_date): dt = start_date try: dat.datetime.strptime(start_date,'%Y-%m-%d') except: print('Некорректная начальная дата:', start_date) dt_list = [] print('Список дат:', dt_list) try: dat.datetime.strptime(end_date,'%Y-%m-%d') except: print('Некорректная конечная дата:', end_date) dt_list = [] print('Список дат:', dt_list) if start_date > end_date: dt_list = [] print('Начальная дата позже конечной:',dt_list) dt_list = [] while dt <= end_date: dt_list.append(dt) dt = dat.datetime.strptime(dt,'%Y-%m-%d') + dat.timedelta(days=1) dt = dt.strftime('%Y-%m-%d') print(dt_list) start_date = input('Введите дату начальную дату в формате YYYY-MM-DD:') end_date = input('Введите дату конечную дату в формате YYYY-MM-DD:') date_range(start_date,end_date) #Задание 4 (необязательное) '''Ваш коллега прислал код функции: DEFAULT_USER_COUNT = 3 def delete_and_return_last_user(region, default_list=[‘A100’, ‘A101’, ‘A102’]): ""“ Удаляет из списка default_list последнего пользователя и возвращает ID нового последнего пользователя. ”"" element_to_delete = default_list[-1] default_list.remove(element_to_delete) 1 return default_list[DEFAULT_USER_COUNT-2] При однократном вызове этой функции всё работает корректно: delete_and_return_last_user(1) ‘A101’ Однако при повторном вызове получается ошибка IndexError: list index out of range. Задание: Что значит ошибка list index out of range? Почему при первом запуске функция работает корректно, а при втором — нет?''' '''Ответ: list index out of range - значит идет обращение к элементу списка которого фактически в списке нет return default_list[DEFAULT_USER_COUNT-2] всегда возвращает элемент списка с индексом 1, т.к. переменная по факту не переменная а константа DEFAULT_USER_COUNT = 3. После второго запуска в списке остается только элемент с индексом 0 '''