-
Notifications
You must be signed in to change notification settings - Fork 38
Atividade da semana05 LohanaRodrigues #14
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
…nosso dia-a-dia da questão escolar reprograma
mayulabs
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oi Lohana!
Fiz uma revisão de código dentro do seu projeto. Vi no seu código que faltaram alguns detalhes em relação ao que foi proposto e ao que foi implementado. Futuramente, treine utilizar o dicionário com a relação de chave e valor. Esta é uma das principais características do dicionário.
Boa sorte e sucesso na sua jornada ♥
| @@ -0,0 +1,132 @@ | |||
| def main(): | |||
| dataset = {'discentes': []} | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Aqui, deveriamos utilizar o dataset proposto para o exercício. Nele possuía uma estrutura específica para seguir.
| def incluir_nova_discente(dataset): | ||
| nome = input("Por favor, digite o nome da discente: ") | ||
| try: | ||
| faltas = int(input("Por favor, digite o número de faltas: ")) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Aqui, o sistema deveria conseguir incluir a presença da respectiva aula. Futuramente, em outro MVP, se eu quisesse saber em quais aulas a aluna faltou, não haveria essa informação. No requisito funcional havia:
- O sistema deve permitir a inclusão de uma nova aluna com os seguintes dados: nome, sobrenome, turma, notas (uma lista de números), presença (uma lista de booleanos indicando a presença em cada aula) e participação (um número representando o nota de participação da aluna).
Sugestão:
| faltas = int(input("Por favor, digite o número de faltas: ")) | |
| faltas = obter_presença() | |
| def obter_presença(): | |
| quantidade_aulas = int(input('Digite quantas aulas houveram: ')) | |
| lista_presença = [] | |
| for contador in range(quantidade_aulas): | |
| while True: | |
| entrada = input(f'Presença na aula #{contador +1} (True/False): ') | |
| if entrada in ['True', 'False']: | |
| lista_presença.append(eval(entrada)) | |
| break | |
| else: | |
| print('Informação inválida. Insira apenas True ou False') |
| while True: | ||
| nota = input("Nota: ") | ||
| if nota.lower() == 'finalizar': | ||
| break | ||
| try: | ||
| nota_float = float(nota) | ||
| if 0 <= nota_float <= 10: | ||
| notas.append(nota_float) | ||
| else: | ||
| print("Essa nota não atende o critério do intervalo aceitável (0 a 10).") | ||
| except ValueError: | ||
| print("Essa entrada é inválida. Por favor, digite um número válido ou 'finalizar' para concluir.") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Muito boa a implementação para obter notas.
| if len(notas) == 0: | ||
| print("Discente não incluída.") | ||
| return | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Na função faltou obter nota de participação, no dataset não foi incluído e precisamos dessa informação para o cálculo de aprovação. Na próxima vez, é importante se atentar ao requisito funcional.
| dataset['discentes'].append({ | ||
| 'nome': nome, | ||
| 'faltas': faltas, | ||
| 'notas': notas | ||
| }) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Dentro da proposta do exercício era utilizar a tupla como estrutura de chave para o dicionário. Não foi utilizado nem o dataset proposto, e o dataset montado não segue a estrutura proposta.
Sugestão:
| dataset['discentes'].append({ | |
| 'nome': nome, | |
| 'faltas': faltas, | |
| 'notas': notas | |
| }) | |
| def salvar_dados(nome, sobrenome, turma, lista_presença, nota_participação, notas): | |
| chave = (nome, sobrenome) | |
| dataset[chave] = { | |
| "Turma": turma, | |
| "Notas": notas, | |
| "Presença": lista_presença, | |
| "Participação": nota_participação | |
| } |
|
|
||
| print("\nDiscentes:") | ||
| for discente in dataset['discentes']: | ||
| print(f"Nome: {discente['nome']}, Faltas: {discente['faltas']}, Notas: {discente['notas']}") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Note que para esta funcionalidade, deveriamos imprimir apenas os nomes. Funcionalidades deste tipo são úteis para pegar a correlação de alunos, clientes de uma empresa. O exercício era mais simples do que foi implementado
| for discente in dataset['discentes']: | ||
| if discente['nome'] == nome: | ||
| print(f"Discente: {discente['nome']}, Faltas: {discente['faltas']}") | ||
| return |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Temos dois pontos aqui:
1 - No exercício proposto, a ideia era receber o nome e sobrenome e utilizar ele como chave para a busca no dicionário. Para não precisar implementar uma função de busca. Neste caso, acabamos tendo uma complexidade maior do que o necessário. Sendo que poderiamos apenas acessar por chave e valor.
2 - A quantidade de faltas deveria através da contagem de faltas em uma lista booleana. Esta implementação não é válida.
| for discente in dataset['discentes']: | ||
| if discente['nome'] == nome: | ||
| media = sum(discente['notas']) / len(discente['notas']) | ||
| presenca = 1 - (discente['faltas'] / 100) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Esse cálculo de percentual não está correto, pois não recebemos a lista de presença no início. Assim, não temos o número total de aulas, e por fim, não temos a proporção de aulas que a pessoa faltou. O cálculo correto seria:
Percentual_de_faltas = Quantidade_de_faltas / Quantidade_de_aulas
Inclusão de uma nova aluna na minha base de dados
Após a inclusão, o sistema deve exibir uma confirmação de que a aluna foi adicionada com sucesso.
O sistema deve exibir a lista de todas as alunas cadastradas, mostrando apenas os nomes.
Caso não haja alunos cadastrados, o sistema deve informar que não há registros.
Consultar a quantidade de faltas de uma aluna
O sistema deve permitir ao usuário buscar as faltas de uma aluna específica.
O sistema deve calcular o status de aprovação de uma aluna com base nas suas notas.
O sistema deve calcular a média simples das notas da aluna
Após o cálculo, o sistema deve exibir o status de aprovação da aluna (aprovada ou reprovada) e sua média final