-
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
Atividade semanal Projeto Guiado I - Mariana Araujo #31
base: main
Are you sure you want to change the base?
Conversation
notas = obter_notas(nome,sobrenome) | ||
|
||
salvar_dados_aluna(nome, sobrenome, turma, notas, lista_de_presenca, nota_participacao) | ||
return incluir_nova_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.
Na linha 48, a função incluir_nova_aluna está retornando ela mesma sem a utilização posterior. Considere remover já que ela se torna desnecessária neste caso.
Uma função pode retornar ela mesma em alguns casos específicos, geralmente ligadas a uma técnica que chamamos de recursão. Onde uma função chama a si mesma até que a condição de parada seja atingida. Mas neste caso, mesmo que retorne um dado específico, você não a usaria.
lista_de_presenca = [] | ||
for i in range(1,6): | ||
while True: | ||
contagem = input(f'Aluna compareceu a aula do dia {i}? True/False: ') |
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.
Adorei a abordagem para receber o dado e adicionar para uma lista booleana! :)
Isso também é extensível para receber de outras formas como "Sim", "S", etc. Parabéns!
"Presença": lista_de_presenca, | ||
"Participação": nota_participacao | ||
} | ||
return(print('Aluna',nome,sobrenome,'foi adicionada com sucesso!')) |
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, houve um erro conceitual do uso de return. A função print já realiza a ação de exibir a mensagem na tela e retorna "None". Na prática, o código está explicitando que quer retornar "vazio", mas isso não é necessário na maioria dos casos. Por isso, poderia manter essa linha apenas removendo o return.
Sugestão:
return(print('Aluna',nome,sobrenome,'foi adicionada com sucesso!')) | |
print('Aluna', nome, sobrenome, 'foi adicionada com sucesso!') |
return incluir_nova_aluna | ||
|
||
|
||
def presenca(nome,sobrenome): |
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.
O nome da função poderia ser mais descritivo para indicar o que ela faz, pense sobre, o que ela faz com a presença? Ela poderia recuperar a presença, incluir presença, alterar a presença, etc..
Outro ponto, é que recebemos os argumentos nome e sobrenome, mas não estamos utilizando na função. Então podemos remover neste ponto pra que não tenha complexidade desnecessária.
Sugestão:
def presenca(nome,sobrenome): | |
def obter_presenca_aluna(): |
lista_de_alunas = dataset.keys() | ||
for item in lista_de_alunas: | ||
print('.',item[0],item[1]) | ||
if not lista_de_alunas: |
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.
Verificação de lista vazia:
Esta verificação está sendo realizada após iterar (passar) pelos itens do dicionário. Uma melhoria poderia ser utilizar antes do for
Sugestão:
if not lista_de_alunas: | |
if not lista_de_alunas: | |
print('Não há cadastro no sistema. Escolha a opção abaixo para cadastrar uma nova aluna.') | |
else: | |
for item in lista_de_alunas: | |
print('.',item[0],item[1]) |
for item in lista_de_alunas: | ||
print('.',item[0],item[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.
Experimente desempacotar a tupla para tornar o código mais claro. Ou seja, dê um nome para as variáveis que você está utilizando dentro do seu for e ao invés de utilizar os índices da tupla, você pode usar os nomes das variáveis que você criou:
Sugestão:
for item in lista_de_alunas: | |
print('.',item[0],item[1]) | |
for nome, sobrenome in lista_de_alunas: | |
print('.', nome, sobrenome) |
|
||
|
||
def consultar_faltas_aluna(): | ||
print('\nInsira os seguintes dados: ') |
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 pedir para inserir os seguintes dados, poderia considerar em colocar uma mensagem sobre quais dados o usuário vai começar a colocar:
print('\nInsira os seguintes dados: ') | |
print('\nInforme o nome e sobrenome da aluna para consultar as faltas:') |
print('\nInsira os seguintes dados: ') | ||
frequencia_nome = input('Digite o nome da aluna: ') | ||
frequencia_sobrenome = input('Digite o sobrenome da aluna: ') | ||
frequencia = dataset.get((frequencia_nome,frequencia_sobrenome)) |
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.
Tome cuidado com nome da variável, neste exemplo, estamos recuperando os dados da aluna e não os dados da frequência dela.
frequencia = dataset.get((frequencia_nome,frequencia_sobrenome)) | |
dados_aluna = dataset.get((frequencia_nome,frequencia_sobrenome)) |
|
||
if participacao >= 6 and percentual >= 80 and media >= 6: | ||
status = 'APROVADA' | ||
elif 3 <= media < 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.
Excelente uso do comparador encadeado!
Atividade da 5° semana.