Skip to content
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

resposta atividade #16

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

sayonaramagalhaes
Copy link

No description provided.

Copy link
Collaborator

@mayumisngk mayumisngk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oi Sayonara!

Fiz uma revisão de código (code review) para você e espero que você possa revisar seu projeto e colocar posteriormente mais coisas. Futuramente, se quiser complementar mais o sistema, você pode pensar em encapsular as funcionalidades, dando mais especifidade a função e dando responsabilidades únicas para ela.

Único ponto de atenção seria ter testado as funções que você implementou com uma aluna que foi cadastrada pela função de incluir aluna, pois havia um erro. De resto, está tudo certo, só tome cuidado com o excesso de quebra de linhas, para não tornar o código sujo.

Boa sorte e sucesso na sua jornada! ♥
Parabéns pelo trabalho!

Comment on lines +45 to +50
dataset[(nome.split()[0] , nome.split()[1])] = {
"Turma": turma,
"Notas": notas,
"Presença": presença,
"Paticipaçao": nota_participaçao
}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cuidado ao tentar salvar um valor sem verificar se ele existe. Se uma pessoa não adiciona um sobrenome, o código retorna erro para salvar.


return notas

def chamada():
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

O nome da função chamada() é bastante genérico e não deixa claro o que exatamente a função faz. Para melhorar a clareza e a manutenção do código, o nome da função deve ser mais descritivo em relação à sua funcionalidade. Por exemplo, incluir dados de chamada, consultar chamada, excluir chamada, etc..

Comment on lines +60 to +61


Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cuidado com o excesso de quebra de linhas no código.

Comment on lines +52 to +53
pass
#TODO - Implentar a função
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Em Python, a instrução pass é usada como um placeholder. Ela é útil em situações onde o código precisa de uma declaração sintaticamente, mas você ainda não quer (ou não precisa) escrever o código funcional. Neste caso, como vocês iriam realizar uma implementação posterior, foi utilizado para que vocês substituissem pelo próprio código.

Sugestão:

Suggested change
pass
#TODO - Implentar a função

Comment on lines +57 to +59
for i in range(3):
nota=float(input(f"Digite a {i+1}° nota:" ))
notas.append(nota)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Esta função está simples e clara, o que é muito positivo. Uma sugestão é que como temos uma conversão de dados, uma boa prática é colocar um try except para validar o dado de entrada :)

Comment on lines +83 to +86
print("informe o nome da aluna")
nome_completo=input("Nome completo")
nome_aluna,sobrenome_aluna=nome_completo.split()
chave_aluna=(nome_aluna,sobrenome_aluna)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Para não precisar repetir esse bloco de código em todas as funções, podemos criar uma função de obter_nome_aluna() para receber o nome da aluna.

Sugestão:

Suggested change
print("informe o nome da aluna")
nome_completo=input("Nome completo")
nome_aluna,sobrenome_aluna=nome_completo.split()
chave_aluna=(nome_aluna,sobrenome_aluna)
chave_aluna = obter_nome_aluna()
def obter_nome_aluna():
print("informe o nome da aluna")
nome_completo=input("Nome completo")
nome_aluna,sobrenome_aluna=nome_completo.split()
return (nome_aluna,sobrenome_aluna)

Comment on lines +92 to +99




return

pass
#TODO - Implentar a função
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Neste caso, como a função de consultar é apenas para imprimir os dados da presença, então não precisamos usar o return, dado que não retornamos nenhum dado.
Podemos remover o pass, TODO e o excesso de quebra de linhas também.
Sugestão:

Suggested change
return
pass
#TODO - Implentar a função

Comment on lines +108 to +123





print(f" Notas de {nome_completo}:{nota}" )







return
pass
#TODO - Implentar a função
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Podemos remover o pass, TODO e o excesso de quebra de linhas também.

Sugestão:

Suggested change
print(f" Notas de {nome_completo}:{nota}" )
return
pass
#TODO - Implentar a função
print(f" Notas de {nome_completo}:{nota}" )

"Turma": turma,
"Notas": notas,
"Presença": presença,
"Paticipaçao": nota_participaçao
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Repare que estamos usando uma chave aninhada chamada "Participaçao", e na função de consulta de aprovação, a chave que buscamos é "Participação" com o til. O que causa erro ao buscar dados de alunas que cadastramos posteriormente. É importante manter consistência com os dados que já temos cadastrados no dataset.

Sugestão:

Suggested change
"Paticipaçao": nota_participaçao
"Paticipação": nota_participaçao

faltas=dataset[chave_aluna]["Presença"]
faltas_contagem=faltas.count(False)
media=sum(notas)/len(notas)
if media>=6 and nota_participaçao>=6 and faltas_contagem<=2:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Neste ponto, era esperado que o cálculo de faltas fosse realizado pelo percentual e não pela quantidade. No requisito funcional é esperado que o cálculo fosse de 80% de presença. Futuramente, com o aumento do dataset, se incluirmos mais dados de presença, esse valor de 2 faltas ficará errado.
Entre operadores, procure adicionar espaços para ajudar na legibilidade do código.

Sugestão:

Suggested change
if media>=6 and nota_participaçao>=6 and faltas_contagem<=2:
percentual_faltas = dataset[chave_aluna]["Presença"].count(False) / len(dataset[chave_aluna]["Presença"])
if media >= 6 and nota_participaçao >= 6 and percentual_faltas <= 0.2:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants