-
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
Dállia Sintique - entrega Projeto Guiado-I #35
base: main
Are you sure you want to change the base?
Conversation
|
||
def obtem_nome(pergunta): | ||
while True: | ||
entrada_usuário = str(input(pergunta)).lstrip().rstrip() |
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.
- Quando utilizamos o input, já estamos recebendo uma string, assim, não precisamos utilizar uma conversão de dados str :)
- Para não precisar utilizar um lstrip e um rstrip, podemos usar o strip, e ele já remove os espaços no início e final da string
Sugestão:
entrada_usuário = str(input(pergunta)).lstrip().rstrip() | |
entrada_usuário = input(pergunta).strip() |
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 Dállia!
Fiz uma revisão de código (code review) para você e espero que você possa revisar seu projeto e colocar posteriormente mais coisas. Vi que você testou bem seu código e o desenvolvimento ficou bem legal. Futuramente, se quiser complementar mais o sistema, você pode pensar em encapsular as funcionalidades de aprovação, dando mais especifidade a função e dando responsabilidades únicas para ela.
No demais, esse foi um dos melhores projetos, parabéns pelo trabalho!
Boa sorte e sucesso na sua jornada! ♥
|
||
return codigo_opcao | ||
|
||
def obtem_nome(pergunta): |
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.
Ótimo uso de funções para encapsular a funcionalidade de obter nome e sobrenome de aluna e tratar o dado :)
while True: | ||
entrada_usuário = str(input(pergunta)).lstrip().rstrip() | ||
if entrada_usuário.replace(" ", "").isalpha() and entrada_usuário != "": | ||
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.
Ao invés de dar break, podemos retornar o entrada_usuário já neste ponto :)
Sugestão:
break | |
return entrada_usuário |
status = 0 | ||
while status == 0: |
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 a condição de saída já está dentro do bloco, podemos colocar o return no ponto que queremos. Assim, não necessitamos utilizar uma variável de controle.
Sugestão:
status = 0 | |
while status == 0: | |
while True: |
else: | ||
nota = float(input(f"Digite a nota de participação da aluna) (0 a 10): ")) | ||
if nota >= 0 and nota <= 10: | ||
status = 1 |
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 comentei, ao invés de colocar status 1 aqui, podemos apenas dar o return da função aqui.
Sugestão:
status = 1 | |
return nota |
status = 1 | ||
else: | ||
print("Digite uma nota válida entre 0 e 10") | ||
except: |
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 estamos utilizando valores, podemos especificar a except:
Sugestão:
except: | |
except ValueError: |
|
||
while True: | ||
turma = (input ('Informe a turma da aluna com A / B ou C: ')).strip().upper() | ||
if turma == "A" or turma == "B" or turma == 'C': |
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.
Aqui temos uma condicional de uma mesma variável validando para mais de um valor, podemos incluí-lo em uma lista :)
Sugestão:
if turma == "A" or turma == "B" or turma == 'C': | |
if turma in ['A', 'B', 'C']: |
|
||
def consultar_lista_alunas(): | ||
print(' Segue a lista de alunas cadastradas ') | ||
if len(dataset) != 0: |
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.
Podemos simplificar a validação utilizando a própria coleção.
Sugestão:
if len(dataset) != 0: | |
if dataset: |
for nome in dataset.keys(): | ||
print(nome[0]) |
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.
Apenas para curiosidade, podemos desempacotar a tupla dando nome aos respectivos campos, assim não precisariamos usar o índice da tupla :)
Sugestão:
for nome in dataset.keys(): | |
print(nome[0]) | |
for nome, sobrenome in dataset.keys(): | |
print(f"{nome} {sobrenome}") |
conte_nota = 0 | ||
for nota in notas_aluna: | ||
conte_nota += 1 | ||
print(f' A nota {conte_nota} da aluna {nome_completo[0]} é: {nota}') |
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.
A função for já enumera sozinho, para recuperar o valor, é só utilizar o enumerate. Assim, não precisamos utilizar o contador e deixamos o código mais limpo.
Sugestão:
conte_nota = 0 | |
for nota in notas_aluna: | |
conte_nota += 1 | |
print(f' A nota {conte_nota} da aluna {nome_completo[0]} é: {nota}') | |
for i, nota in enumerate(notas_aluna, start=1): | |
print(f'A nota {i} da aluna {nome_completo[0]} é: {nota}') |
def consultar_status_aprovacao(): | ||
try: | ||
nome_completo = tuple(obtem_nome('Informe o nome completo da aluna: ').title().split()) | ||
|
||
notas_aluna = dataset[nome_completo]['Notas'] | ||
media_aluna = round(sum(notas_aluna)/len(notas_aluna),1) | ||
|
||
|
||
presença_aluna = dataset[nome_completo]['Presença'] | ||
numero_presenca = presença_aluna.count(True) | ||
porcentagem_presenca = round((numero_presenca/len(presença_aluna)) *100) | ||
|
||
nota_participação = dataset[nome_completo]['Participação'] | ||
|
||
if media_aluna >=6 and porcentagem_presenca >= 80 and nota_participação >=6: | ||
print(f' Aluna aprovada. \n Média Final: {media_aluna}') | ||
elif media_aluna <6: | ||
print(f' Aluna Reprovada por média inferior a 6.0 \n Média Final Obtida: {media_aluna}') | ||
elif nota_participação < 6: | ||
print(f' Aluna Reprovada por nota de participação inferior a 6.0 \n Nota de participação obtida: {nota_participação}. \n Média Final: {media_aluna} ') | ||
else: | ||
print(f' Aluna Reprovada por presença inferior a 80%.\n A presença da aluna foi de {porcentagem_presenca}% \n Média Final: {media_aluna}') | ||
except KeyError: | ||
print("Não localizado. Por favor informe o nome completo de uma aluna") |
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.
Boa implementação do cálculo de aprovação, cuidado com as quebras de linhas adicionais e foi muito legal você ter adicionado uma mensagem pra cada tipo de reprovação. No geral, foi tudo bem testado. Parabéns pelo trabalho! :)
Entrega do Projeto Guiado- I, semana 5.
Criado sistema de consulta de informações Aluna, arquivos sistema_alunas.py e README.md salvos no diretório Dallia_Sintique.
Profª Mayumi.