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

ex 5 #28

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

ex 5 #28

wants to merge 1 commit into from

Conversation

maria-gomes23
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 Maria!

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.

Cuidado com o uso de referências externas no código, tente pensar de forma mais simples possível. A utilização excessiva pode prejudicar o pensamento individual neste início do processo de desenvolvimento da lógica de programação.

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

Comment on lines +43 to +44
notas_input = input("Insira as notas separadas por vírgula:\n")
notas = notas_input.split(",")
Copy link
Collaborator

Choose a reason for hiding this comment

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

Ao utilizar split, inserimos os valores em uma lista de strings. Precisamos ficar atentas nas funções prontas que usamos. Isso gera erros na hora de somar as notas na função de consultar_status_aprovacao


presenca_input = input("Insira as presenças separadas por vírgula (1 para presença, 0 para falta)")
presenca_lista = presenca_input.split(",")
presenca = [True if cada.strip() == "1" else False for cada in presenca_lista]
Copy link
Collaborator

Choose a reason for hiding this comment

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

Temos um operador ternário com um for inline. Cuidado com uso de referências externas no código, neste início de desenvolvimento de lógica de programação, podem atrapalhar o processo.

participacao = float(input("Insira a nota de participação"))

if notas and all(0 <= len(nota) <= 10 for nota in notas):
global dataset
Copy link
Collaborator

Choose a reason for hiding this comment

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

Não é necessário declarar o dataset, ele já está criado.

Comment on lines +75 to +81
aluna_encontrada = False
for key in dataset.keys():
if f"{key[0]} {key[1]}" == nome_completo:
faltas = dataset[key]["Presença"].count(False)
print(f"A aluna {nome_completo} possui {faltas} faltas.")
aluna_encontrada = True
break
Copy link
Collaborator

Choose a reason for hiding this comment

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

Temos uma complexidade desnecessária no código. O acesso aos dados de uma aluna é feita pela chave, então podemos só acessar os valores. Pensar em códigos mais simples é algo importante na programação.

Sugestão:

Suggested change
aluna_encontrada = False
for key in dataset.keys():
if f"{key[0]} {key[1]}" == nome_completo:
faltas = dataset[key]["Presença"].count(False)
print(f"A aluna {nome_completo} possui {faltas} faltas.")
aluna_encontrada = True
break
nome = input('Informe o primeiro nome da aluna: ').title()
sobrenome = input('Informe o sobrenome da aluna: ').title()
chave = (nome, sobrenome)
if chave in dataset:
faltas = dataset[chave]["Presença"].count(False)
print(f"A aluna {nome_completo} possui {faltas} faltas.")

Comment on lines +91 to +96
for key in dataset.keys():
if f"{key[0]} {key[1]}" == nome_completo:
notas = dataset[key]["Notas"]
print(f"As notas de {nome_completo} são: {notas}")
aluna_encontrada = True
break
Copy link
Collaborator

Choose a reason for hiding this comment

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

Assim como a função de faltas, aqui tem uma complexidade desnecessária no código.


media = sum(notas) / len(notas)

if media >= 6 and (presenca.count(True) / len(presenca)) >= 0.8 and participacao > 6:
Copy link
Collaborator

Choose a reason for hiding this comment

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

Como boa prática, todo cálculo que precisamos fazer, é recomendado fazer antes de colocar no comparador. Podemos criar uma variável de percentual_presenca, calcular e comparar aqui.

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