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

Atividade semanal Projeto Guiado I - Mariana Araujo #31

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

marianadsa
Copy link

Atividade da 5° semana.

notas = obter_notas(nome,sobrenome)

salvar_dados_aluna(nome, sobrenome, turma, notas, lista_de_presenca, nota_participacao)
return incluir_nova_aluna
Copy link
Collaborator

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: ')
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 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!'))
Copy link
Collaborator

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:

Suggested change
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):
Copy link
Collaborator

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:

Suggested change
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:
Copy link
Collaborator

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:

Suggested change
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])

Comment on lines +96 to +97
for item in lista_de_alunas:
print('.',item[0],item[1])
Copy link
Collaborator

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:

Suggested change
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: ')
Copy link
Collaborator

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:

Suggested change
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))
Copy link
Collaborator

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.

Suggested change
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:
Copy link
Collaborator

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!

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