-
Notifications
You must be signed in to change notification settings - Fork 40
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
base: main
Are you sure you want to change the base?
ex 5 #28
Conversation
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 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!
notas_input = input("Insira as notas separadas por vírgula:\n") | ||
notas = notas_input.split(",") |
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.
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] |
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 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 |
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.
Não é necessário declarar o dataset, ele já está criado.
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 |
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 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:
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.") |
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 |
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.
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: |
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.
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.
No description provided.