
Class Task(): description = '' importance = 1 completion_month = '' completion_date = 1 def
creation(): objective = Task() objective.description = input("Введите описание задачи: ") objective.importance = int(input("Введите важность задачи (от 1 до 5): ")) objective.completion_month = input("Введите месяц сдачи: ") objective.completion_date = int(input("Введите дату сдачи: ")) return(objective) # print("Самая важная задача: " + i.description + ", важность- " + str(i.importance) + ", месяц сдачи- " + i.completion_month + ", дата сдачи- " + str(i.completion_date)) # print("Самая срочная задача: " + i.description + ", важность- " + str(i.importance) + ", месяц сдачи- " + i.completion_month + ", дата сдачи- " + str(i.completion_date)) Перед тобой программа, в которой описан класс «Задача» и определена функция для создания экземпляров класса. Допиши программу, выполняя шаги, записанные ниже. Создай 3 любых задачи так, как указано на картинке. У всех задач месяц сдачи должен быть «сентябрь». В списке найди самую важную (самый большой показатель важности) и самую срочную (самое раннее число сдачи) задачи и выведи их описание на экран так, как показано в примере. Функции print() с форматом вывода уже записаны в программе в виде комментариев. Чтобы использовать их, удали символ # в начале строки.

Ответы на вопрос

Решение задания с кодом из условия:
class Task():
# все эти аттрибуты должны быть не у самого класса Задачи, а у объектов
description = ''
importance = 1
# дату нужно выражать по-другому. datetime и Arrow в помощь.
completion_month = ''
completion_date = 1
def creation(): # как раз для этого существует __init__
objective = Task()
objective.description = input("Введите описание задачи: ")
objective.importance = int(input("Введите важность задачи (от 1 до 5): "))
objective.completion_month = input("Введите месяц сдачи: ")
objective.completion_date = int(input("Введите дату сдачи: "))
return objective
tasks = [creation(), creation(), creation()]
i = max(tasks, key=lambda task: task.importance) # находит задачу с максимальной важностью (key=функция, возвращающая важность)
print("Самая важная задача: " + i.description + ", важность- " + str(i.importance) + ", месяц сдачи- " + i.completion_month + ", дата сдачи- " + str(i.completion_date))
i = min(tasks, key=lambda task: task.completion_date) # находит задачу с максимальной датой сдачи (key=функция, возвращающая дату сдачи)
print("Самая срочная задача: " + i.description + ", важность- " + str(i.importance) + ", месяц сдачи- " + i.completion_month + ", дата сдачи- " + str(i.completion_date))
Более правильное решение:
import datetime
class Task(object):
def __init__(self, description, priority, due_date):
self.description = str(description)
priority = int(priority)
if priority not in range(1, 6):
raise ValueError("priority must be 1, 2, 3, 4, or 5")
self.priority = priority
if isinstance(due_date, datetime.datetime):
due_date = due_date.date()
if not isinstance(due_date, datetime.date):
raise ValueError("due_date must be datetime.datetime "
"or datetime.date")
self.due_date = due_date
def __repr__(self):
return f"Task({self.description}, {self.priority}, {self.due_date})"
@classmethod
def from_user_input(cls):
description = input("Enter description of the task: ")
while True:
priority = input("Enter priority of the task (1-5): ")
if priority in map(str, range(1, 6)):
priority = int(priority)
break
date_format = "%d.%m.%Y"
while True:
due_date = input(f"Enter due date (like {date_format}): ")
try:
due_date = datetime.datetime.strptime(due_date, date_format).date()
except ValueError:
pass
else:
break
return cls(description, priority, due_date)
tasks = [Task.from_user_input(),
Task.from_user_input(),
Task.from_user_input()]
print("The most important task:", max(tasks, key=lambda task: task.priority))
print("The most urgent task:", min(tasks, key=lambda task: task.due_date))



Для выполнения задачи, вы можете дополнить вашу программу следующим образом:
pythonclass Task():
description = ''
importance = 1
completion_month = 'сентябрь'
completion_date = 1
@staticmethod
def creation():
objective = Task()
objective.description = input("Введите описание задачи: ")
objective.importance = int(input("Введите важность задачи (от 1 до 5): "))
objective.completion_month = 'сентябрь'
objective.completion_date = int(input("Введите дату сдачи: "))
return objective
# Создаем 3 задачи
tasks = []
for _ in range(3):
task = Task.creation()
tasks.append(task)
# Найдем самую важную и самую срочную задачи
most_important_task = max(tasks, key=lambda x: x.importance)
most_urgent_task = min(tasks, key=lambda x: x.completion_date)
# Выводим информацию о найденных задачах
print("Самая важная задача: " + most_important_task.description + ", важность- " + str(most_important_task.importance) + ", месяц сдачи- " + most_important_task.completion_month + ", дата сдачи- " + str(most_important_task.completion_date))
print("Самая срочная задача: " + most_urgent_task.description + ", важность- " + str(most_urgent_task.importance) + ", месяц сдачи- " + most_urgent_task.completion_month + ", дата сдачи- " + str(most_urgent_task.completion_date))
Этот код создает 3 задачи с заданными вами параметрами и затем находит самую важную (с наивысшей важностью) и самую срочную (с самой ранней датой сдачи) задачи из списка и выводит их описание на экран.


Похожие вопросы
Топ вопросов за вчера в категории Информатика








Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili