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

Exercício semana 05 #24

Open
wants to merge 9 commits into
base: main
Choose a base branch
from
Open

Conversation

floracanabrava
Copy link

Exercício semana 05 - projeto #1

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.

Flora, parabéns pelo trabalho!
Fiz uma revisão de código para você e espero que você possa revisar seu projeto e complementar posteriormente com 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.
Boa sorte e sucesso na sua jornada! ♥
Parabéns pelo trabalho!

Comment on lines +143 to +151
def salvar_dados_alunas(nome, sobrenome, turma, notas, presenca, participacao):
chave = (nome, sobrenome)
dataset[chave] = {
(nome, sobrenome):{
"Turma": turma,
"Notas": notas,
"Presença": presenca,
"Participação": participacao
},}
Copy link
Collaborator

Choose a reason for hiding this comment

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

A função salvar_dados_alunas está com uma estrutura de dados aninhado diferente da estrutura original do nosso dataset. Como já temos uma tupla na chave, não necessitava de outra tupla no corpo do dicionário. Quando realizamos um teste de consulta de notas com uma aluna cadastrada manualmente, podemos reparar que acaba dando erro por causa da implementação desta função.

Sugestão:

Suggested change
def salvar_dados_alunas(nome, sobrenome, turma, notas, presenca, participacao):
chave = (nome, sobrenome)
dataset[chave] = {
(nome, sobrenome):{
"Turma": turma,
"Notas": notas,
"Presença": presenca,
"Participação": participacao
},}
def salvar_dados_aluna(nome, sobrenome, turma, notas, presenca, participacao):
chave = (nome, sobrenome)
dataset[chave] = {
"Turma": turma,
"Notas": notas,
"Presença": presenca,
"Participação": participacao
}

sobrenome = input("Agora, informe o sobrenome da aluna: ")
while True:
turma = input ("Informe qual a turma da aluna: ")
if turma == "Turma A" or turma == "Turma B" or turma == "Turma C":
Copy link
Collaborator

Choose a reason for hiding this comment

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

Adorei a validação por turma, ótima sacada :)
Quando tiver que validar se uma variável possui um valor entre uma lista de valores, podemos usar uma lista para isso:

Sugestão:

Suggested change
if turma == "Turma A" or turma == "Turma B" or turma == "Turma C":
if turma in ["Turma A", "Turma B", "Turma C"]:


salvar_dados_alunas(nome, sobrenome, turma, notas, presenca, participacao)

return (nome, sobrenome)
Copy link
Collaborator

Choose a reason for hiding this comment

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

Aqui foi adicionado um retorno para a função, mas não utilizamos essa tupla no retorno da função na main, então podemos remover para não gerar complexidade desnecessária.

Comment on lines +63 to +64
for chave in dataset.keys():
print(f"\nAluna: {chave[0]} {chave[1]}")
Copy link
Collaborator

Choose a reason for hiding this comment

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

Uso da tupla conforme o esperado. Uma opção para trazer maior clareza ao código é desempacotar a tupla em variáveis que fiquem mais fáceis.

Sugestão:

Suggested change
for chave in dataset.keys():
print(f"\nAluna: {chave[0]} {chave[1]}")
for nome, sobrenome in dataset.keys():
print(f'Nome: {nome} {sobrenome}')

Comment on lines +69 to +72

qtd_faltas = dataset[(nome, sobrenome)]["Presença"].count(False)
print(f"A quantidade de faltas de {nome} {sobrenome} é {qtd_faltas}.")

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, poderiamos adicionar uma validação para verificar se a aluna está cadastrada na nossa base para evitar erros.

Sugestão:

Suggested change
qtd_faltas = dataset[(nome, sobrenome)]["Presença"].count(False)
print(f"A quantidade de faltas de {nome} {sobrenome} é {qtd_faltas}.")
chave = (nome, sobrenome)
if chave in dataset:
qtd_faltas = dataset[(nome, sobrenome)]["Presença"].count(False)
print(f"A quantidade de faltas de {nome} {sobrenome} é {qtd_faltas}.")
else:
print('Aluna não encontrada.')

def consultar_notas_aluna():
nome = input("Por favor, nos informe o nome da aluna: ")
sobrenome = input("Agora informe o sobrenome da aluna: ")

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 na função de faltas, poderiamos acrescentar uma validação aqui para validar se a aluna existe no dicionário

notas = dataset[(nome, sobrenome)]["Notas"]
media = float(sum(notas)/len(notas))
qtd_faltas = dataset[(nome, sobrenome)]["Presença"].count(False)
percentual_de_faltas = (qtd_faltas / 5) * 100
Copy link
Collaborator

Choose a reason for hiding this comment

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

Apesar de saber que no dataset estamos trabalhando com 5 aulas, poderiamos trabalhar com o tamanho da lista, caso haja inclusão de uma aula no nosso dicionário

Sugestão:

Suggested change
percentual_de_faltas = (qtd_faltas / 5) * 100
percentual_de_faltas = (qtd_faltas / len(dataset[chave]["Presença"])) * 100

def consultar_status_aprovacao():
nome = input("Por favor, nos informe o nome da aluna: ")
sobrenome = input("Agora informe o sobrenome da 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 ficar usando (nome, sobrenome) toda hora, podemos criar uma variável para guardar a tupla.
Com isso, podemos também validar se essa chave existe no nosso data set.

Sugestão:

Suggested change
chave = (nome, sobrenome)
if chave in dataset:

Comment on lines +96 to +103
if media < nota_corte:
print(f"A nota final da aluna {nome} {sobrenome} foi {media:.2f}, abaixo da {nota_corte}. A aluna está reprovada.")
elif percentual_de_faltas > 20:
print(f"A aluna {nome} {sobrenome} está reprovada por falta e sua média final foi {media:.2f}.")
elif nota_participacao <= 6:
print(f"A aluna {nome} {sobrenome} está reprovada por participação e sua média final foi {media:.2f}")
else:
print(f"A aluna {nome} {sobrenome} está aprovada e sua média final foi {media:.2f}")
Copy link
Collaborator

Choose a reason for hiding this comment

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

Ótimo uso de condicionais e de formatação da saída.

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