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

Projeto guiado 1 - Sistema reprograma - Veronica #32

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

Conversation

veronica-toledo-bm
Copy link

Projeto concluído informações técnicas no arquivo README.md

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 Veronica!

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.

Vi que você acabou não testando seu projeto com uma aluna inserida manualmente, depois revisite este item. Quando construir um projeto é importante além de testar as funções individualmente, testar como elas interagem entre si.

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


#Inclusão da aluna no dataset

dataset[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.

No salvamento dos dados, a gente deve usar uma tupla ao invés de uma lista, se não, teremos erro no modo como tratamos os dados posteriormente, pois nosso dado no dicionário é de um tipo e estamos salvando com outro

Sugestão:

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

Comment on lines +39 to +42
try:
nome = input("Digite o nome da aluna... ")
except ValueError:
print("Entrada invalida, digite apenas o nome... ")
Copy link
Collaborator

Choose a reason for hiding this comment

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

No código atual, você está usando try-except para capturar exceções de ValueError, mas o uso disso não é apropriado para capturar erros de entrada inválida como você espera. No caso de input, você não espera um ValueError diretamente, então o try-except não é necessário aqui.

Comment on lines +86 to +94
for A_P in presenca:
if A_P == "A":
presenca_convertida.append(False)
elif A_P == "P":
presenca_convertida.append(True)
else:
presenca_convertida.append("Presença invalida.")

presenca = presenca_convertida
Copy link
Collaborator

Choose a reason for hiding this comment

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

Aqui podemos simplificar a parte do split e colocar no for, e dar um nome de variável mais intuitivo para a presença atual

Sugestão:

Suggested change
for A_P in presenca:
if A_P == "A":
presenca_convertida.append(False)
elif A_P == "P":
presenca_convertida.append(True)
else:
presenca_convertida.append("Presença invalida.")
presenca = presenca_convertida
presenca_convertida = []
for estado in presenca.split():
if estado == "A":
presenca_convertida.append(False)
elif estado == "P":
presenca_convertida.append(True)
else:
print(f"Presença '{estado}' inválida. Use 'A' para ausente e 'P' para presente.")
return

#Covertendo lista str para Lista int
notas_int = []
for nota in notas:
notas_int.append(int(nota)) #pegando todas as string notas do professor e convertendo para numero inteiro
Copy link
Collaborator

Choose a reason for hiding this comment

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

Um lembrete amigável é que nota é sempre float, pois é um valor decimal.

Comment on lines +102 to +105
chaves = list(dataset.keys()) #Pegando as chaves do dicionario

for aluna in chaves:
print("Aluna: ", aluna[0], aluna[1]) #Print aluna: (nome e 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.

Em vez de criar uma lista de chaves (chaves = list(dataset.keys())) e iterar sobre ela, você pode iterar diretamente sobre o dicionário dataset.keys(). Isso simplifica o código e torna o processo mais eficiente.

  • Utilizamos diretamente dataset.keys() para iterar sobre as chaves do dicionário.
  • Cada chave (nome, sobrenome) é desestruturada no próprio loop for.
  • O print é formatado para exibir o nome completo da aluna de forma clara e legível.

Sugestão:

Suggested change
chaves = list(dataset.keys()) #Pegando as chaves do dicionario
for aluna in chaves:
print("Aluna: ", aluna[0], aluna[1]) #Print aluna: (nome e sobrenome da aluna)
for nome, sobrenome in dataset.keys():
print(f"Aluna: {nome} {sobrenome}")

Comment on lines +112 to +113
n_faltas = 0
n_presencas = 0
Copy link
Collaborator

Choose a reason for hiding this comment

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

Você poderia usar a função count do python para contar as faltas e presenças. Inicialmente é bom para treinar a lógica de programação, mas usar a função count torna seu código mais limpo e fácil de ver, em relação a um for.

Sugestão:

Suggested change
n_faltas = 0
n_presencas = 0
n_faltas = presenca.count(False)
n_presencas = presenca.count(True)

Comment on lines +129 to +133
avaliacao = 1
print("A aluna", nome_aluna_escolhida, "teve às seguintes notas:")
for nota in notas:
print("Avaliação:", avaliacao, "Nota:", nota)
avaliacao += 1
Copy link
Collaborator

Choose a reason for hiding this comment

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

Podemos usar enumerate(notas, start=1) para iterar sobre a lista de notas (notas) começando a contagem de avaliação de 1. Isso elimina a necessidade de uma variável separada (avaliacao) para contar as avaliações manualmente.

Sugestão:

Suggested change
avaliacao = 1
print("A aluna", nome_aluna_escolhida, "teve às seguintes notas:")
for nota in notas:
print("Avaliação:", avaliacao, "Nota:", nota)
avaliacao += 1
for avaliacao, nota in enumerate(notas, start=1):
print(f"Avaliação {avaliacao}: Nota {nota}")
return notas

Comment on lines +137 to +161
def consultar_status_aprovacao():
nome_aluna_escolhida = input("Digite o nome e sobrenome da aluna que queira consultar o status de aprovação: ")
nome_aluna = tuple(nome_aluna_escolhida.split(" ")) #Pegando a string com nome e sobrenome e converte em uma tupla

nota_corte = 6

print("Para sabermos o status de aprovação da aluna vamos ter que consultar sua nota, participação e presença em aulas")
print("Vamos começar pela nota.")

notas = consultar_notas_aluna(dataset) #Chamando a função para consultar as notas da aluna
media_notas = sum(notas) / len(notas) #Calculando a média: com a somas das notas, dividido pelo numero de notas

print("Agora sua participação.")
participacao = dataset[nome_aluna]["Participação"]
print("A aluna", nome_aluna_escolhida, "teve nota", participacao, "de participação.")

print("Por ultimo a presença.")
porcentagem_presenca = consultar_faltas_aluna(dataset)
print("A aluna", nome_aluna_escolhida, "teve", int(porcentagem_presenca), "% de presença.")

print("")

if media_notas >= 6 and porcentagem_presenca >= 80 and participacao >= 6:
print("A aluna", nome_aluna_escolhida, "esta aprovada.")
else: print("A aluna", nome_aluna_escolhida, "esta reprovada.")
Copy link
Collaborator

Choose a reason for hiding this comment

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

Boa implementação da função de calcular aprovação :)
Uma sugestão é validar se a aluna existe no dataset, para evitar que o código quebre ao tentar acessar uma chave que não existe

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