GERENCIADOR DE TAREFAS EM PYTHON (DESAFIO #3)
SITUAÇÃO PROBLEMA
Como desenvolvedor, você percebeu a necessidade de um programa que auxilie na gestão do tempo e na organização das tarefas diárias. Para isso, você decidiu criar um “Gerenciador de Tarefas” em Python que utiliza os módulos time
, math
e random
para fornecer funcionalidades como cronômetro, cálculo de estatísticas das tarefas e sugestão aleatória de atividades.
REQUISITOS DO PROGRAMA
- Cronômetro de Tarefas: Permitir que o usuário inicie um cronômetro para medir o tempo gasto em uma tarefa específica.
- Estatísticas de Tarefas: Calcular e exibir estatísticas como tempo médio gasto por tarefa, tempo total dedicado.
- Sugestão Aleatória de Tarefas: Com base em uma lista de tarefas pendentes, sugerir aleatoriamente uma tarefa para o usuário iniciar.
- Registro de Tarefas: Manter um registro das tarefas concluídas com seus respectivos tempos e horários de início e término.
ENTRADAS
- Nome da Tarefa: Identificação da tarefa a ser realizada.
- Comando para Iniciar/Parar Cronômetro: Controle do tempo dedicado a cada tarefa.
FUNCIONALIDADES
- Iniciar Cronômetro: Registrar o horário de início de uma tarefa.
- Parar Cronômetro: Calcular o tempo total gasto na tarefa e registrá-lo.
- Exibir Estatísticas: Utilizar o módulo
math
para calcular e exibir:- Tempo médio gasto por tarefa.
- Tempo total dedicado a todas as tarefas.
- Sugerir Tarefa Aleatória: Utilizar o módulo
random
para selecionar e exibir uma tarefa pendente para o usuário. - Registrar Tarefas Concluídas: Armazenar informações sobre as tarefas concluídas, incluindo nome, tempo gasto e horários de início e término.
MAPA MENTAL DO DESAFIO
Gerenciador de Tarefas em Python
├── Cronômetro de Tarefas
│ ├── Iniciar Cronômetro
│ └── Parar Cronômetro
├── Estatísticas de Tarefas
│ ├── Tempo Médio por Tarefa
│ ├── Tempo Total Dedicado
├── Sugestão Aleatória de Tarefas
│ └── Selecionar Tarefa Pendente Aleatoriamente
└── Registro de Tarefas
├── Nome da Tarefa
├── Tempo Gasto
├── Horário de Início
└── Horário de Término
MÓDULO DO CRONÔMETRO
# Importa o módulo time, que permite medir o tempo decorrido.
import time
# Define uma função chamada iniciar_parar.
def iniciar_parar():
# Exibe uma mensagem informando que o cronômetro foi iniciado.
print("O cronômetro iniciou!")
# Registrar o tempo inicial
# Captura o tempo atual em segundos desde a época (01/01/1970).
inicio = time.time()
# Aguarda o usuário pressionar ENTER para continuar.
parar = input("Digite ENTER para encerrar o cronômetro")
# Exibe a entrada do usuário (não é necessário, pode ser removido).
print(parar)
# Registrar o tempo final
# Captura o tempo atual novamente, registrando o tempo final.
fim = time.time()
# Calcula a duração total da contagem,
#subtraindo o tempo inicial do final.
duracao = fim - inicio
# Exibe o tempo decorrido, arredondado para duas casas decimais.
print(f"Tempo gasto na tarefa: {round(duracao, 2)} segundos")
# Retorna a duração da contagem como resultado da função.
return duracao
MÓDULO DE ESTATÍSTICA
# Define uma função chamada media que recebe dois
#tempos como parâmetros.
def media(tarefa1, tarefa2):
# Calcula a média dos dois tempos fornecidos.
resultado = (tarefa1 + tarefa2) / 2
# Exibe o tempo médio arredondado para duas casas decimais.
print(f"Tempo médio: {round(resultado, 2)} segundos")
# Retorna o valor da média calculada.
return resultado
MÓDULO DE SUGESTÃO
# Importa o módulo random, que permite gerar números aleatórios.
import random
# Define a função sugerir_tarefa, que sugere uma tarefa aleatória
#ao usuário.
def sugerir_tarefa():
# Define três possíveis tarefas como strings.
t1 = "Ler um artigo"
t2 = "Fazer um exercício de Python"
t3 = "Revisar anotações"
# Gera um número aleatório entre 1 e 3.
opcao = random.randint(1, 3)
# Verifica qual número foi sorteado e exibe a
#tarefa correspondente.
if (opcao == 1):
print(f"Sugestão de tarefa: {t1}")
elif (opcao == 2):
print(f"Sugestão de tarefa: {t2}")
else: # Se não for 1 nem 2, será 3.
print(f"Sugestão de tarefa: {t3}")
ARQUIVO PRINCIPAL (main.py)
import cronometro # Importa módulo personalizado para controle do cronômetro
import estatisticas # Importa módulo personalizado para cálculos estatísticos
import sugestao # Importa módulo personalizado para sugestão de tarefas
# Função principal
def main():
print("Bem-vindo ao Gerenciador de Tarefas!") # Exibe mensagem de boas-vindas
print("1 - Iniciar cronômetro e registrar tempo") # Opção 1: Cronômetro
print("2 - Calcular estatísticas de duas tarefas") # Opção 2: Estatísticas
print("3 - Sugerir uma tarefa aleatória") # Opção 3: Sugestão de tarefa
print("4 - Sair") # Opção 4: Sair do programa
while True: # Loop infinito até que o usuário escolha sair
escolha = input("Escolha uma opção: ") # Solicita uma opção ao usuário
if escolha == "1":
cronometro.iniciar_cronometro() # Inicia o cronômetro e armazena a duração
elif escolha == "2":
t1 = float(input("Digite o tempo da primeira tarefa (segundos): ")) # Recebe tempo da primeira tarefa
t2 = float(input("Digite o tempo da segunda tarefa (segundos): ")) # Recebe tempo da segunda tarefa
estatisticas.calcular_estatisticas(t1, t2) # Calcula estatísticas com os tempos fornecidos
elif escolha == "3":
sugestao.sugerir_tarefa() # Chama a função que sugere uma tarefa aleatória
elif escolha == "4":
print("Saindo do programa...") # Exibe mensagem de saída
break # Encerra o loop
else:
print("Opção inválida! Tente novamente.") # Mensagem de erro para entrada inválida
# Executando o programa
if __name__ == "__main__":
main() # Chama a função principal
Caso o Python ainda não esteja instalado em seu dispositivo, clique no botão abaixo para realizar a instalação.