-
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 #26
base: main
Are you sure you want to change the base?
Changes from all commits
2eb5652
33e1491
d65daed
3fd90b7
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -0,0 +1,187 @@ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Definindo o dataset diretamente no programa | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dataset = {} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
def main(): | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
print("\n--- Seja bem vinda à Escola do Reprograma! ---") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
print("Sistema de informações de alunas") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
while True: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
cod_opcao = obter_opcao() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if cod_opcao == 1: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
incluir_nova_aluna() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
elif cod_opcao == 2: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
consultar_lista_alunas() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
elif cod_opcao == 3: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
consultar_faltas_aluna() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
elif cod_opcao == 4: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
consultar_notas_aluna() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
elif cod_opcao == 5: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
consultar_status_aprovacao() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
elif cod_opcao == 6: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
print("Encerrando o programa...") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
break | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
def obter_opcao(): | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
while True: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
try: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
codigo_opcao = int(input("\nEscolha uma opção:\n" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
"1 - Incluir uma nova aluna\n" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
"2 - Consultar lista de alunas\n" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
"3 - Consultar faltas da aluna\n" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
"4 - Consultar notas da aluna\n" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
"5 - Consultar status de aprovação\n" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
"6 - Sair do sistema\n" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
"Opção: ")) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if codigo_opcao in [1, 2, 3, 4, 5, 6]: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return codigo_opcao | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
else: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
print("Opção inválida. Por favor, escolha uma opção válida (1 a 6).\n") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
except ValueError: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
print("Entrada inválida. Por favor, digite um número inteiro.\n") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
def incluir_nova_aluna(): | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
nome = input("\nDigite o nome completo da aluna: ") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
sobrenome = input("Digite o sobrenome da aluna: ") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
turma = input("Digite a turma da aluna: ") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Coletando as notas | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
quantidade_notas = int(input("Quantas notas serão inseridas? ")) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
notas_aluna = [] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
for i in range(quantidade_notas): | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
while True: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
try: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
nota = float(input(f"Insira a nota #{i+1}: ")) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if nota < 0 or nota > 10: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
print("Nota fora do intervalo permitido (0-10). Tente novamente.") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
else: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
notas_aluna.append(nota) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
break | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
except ValueError: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
print("Valor inválido. Insira um número válido para a nota.") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+49
to
+61
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Aqui poderiamos criar uma função para que a função incluir_nova_aluna não tivesse tantas responsabilidades. Em uma refatoração, podemos mover esta e a parte de presenças para novas funções :) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Coletando a presença (faltas) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
quantidade_dias = int(input("Quantos dias de presença serão inseridos? ")) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
presenca_aluna = [] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
for i in range(quantidade_dias): | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
while True: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
try: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
presenca = input(f"Informar presença no dia #{i+1} (True/False): ").strip().lower() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if presenca not in ['true', 'false']: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
raise ValueError("Valor inválido. Insira 'True' ou 'False'.") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
else: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
presenca_aluna.append(presenca == 'true') | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Este é um ótimo uso do retorno de dado booleano implícito para adicionar o dado a uma lista. Cuidado com o uso de referências externas no código, sei que neste ponto tem um pouco de lógica mais avançada, assegure-se de conseguir implementar sozinha. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
break | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
except ValueError as e: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
print(e) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Coletando a nota de participação | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
while True: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
try: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
participacao = float(input("Insira a nota de participação da aluna: ")) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if participacao < 0 or participacao > 10: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
raise ValueError("Nota de participação fora do intervalo permitido (0-10).") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
else: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
break | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
except ValueError as e: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
print(e) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+82
to
+87
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Aqui não necessáriamente precisaria usar um raise ValueError, poderia ser um print. Assim, teriamos a mesma lógica com implementação mais simples. Neste ponto, caso insiramos uma letra, recebemos uma mensagem de exception não tratado, que é a mensagem retornada pela linha 87. Sugestão:
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Calculando o status de aprovação | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
media = sum(notas_aluna) / len(notas_aluna) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
percent_presenca = presenca_aluna.count(True) / len(presenca_aluna) * 100 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if participacao >= 6 and percent_presenca >= 80 and media >= 6: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
status = "Aprovada" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
elif 3 <= media < 6: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
status = "Recuperação" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
fez_recuperacao = input("\nA média da aluna está baixa. Ela fez prova de recuperação? ").lower() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if fez_recuperacao == 'sim': | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
while True: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
try: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
nota_recuperacao = float(input("Insira a nota de recuperação: ")) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if nota_recuperacao < 0 or nota_recuperacao > 10: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
raise ValueError("Nota de recuperação fora do intervalo permitido (0-10).") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
else: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
break | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
except ValueError as e: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
print(e) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+96
to
+107
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. No projeto de casa, não precisava incluir a parte de recuperação, mas ótimo trabalho em criar fluxos adicionais. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
else: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
nota_recuperacao = None | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
print("Então essa aluna será reprovada por média.") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
else: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
status = "Reprovada" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
nota_recuperacao = None | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Adicionando a aluna ao dataset | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
chave = f"{nome} {sobrenome}" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dataset[chave] = { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
"Turma": turma, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
"Notas": notas_aluna, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
"Presença": presenca_aluna, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
"Nota de Participação": participacao, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
"Status": status, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
"Média Final": round(media, 2) # Arredonda a média final para duas casas decimais | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+117
to
+124
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Adorei que foram incluídos mais elementos no dicionário. Parabéns pelo bom uso :) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Exibindo o status de aprovação da aluna | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
print(f"\nStatus de aprovação da aluna '{chave}': {status}") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
print(f"Média final: {media:.2f}") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if status == "Recuperação": | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
print(f"Nota de recuperação: {nota_recuperacao:.2f}") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
print(f"\nAluna '{chave}' adicionada com sucesso!") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
def consultar_lista_alunas(): | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if not dataset: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
print("\nNão há alunas cadastradas.") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
else: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
print("\nLista de alunas cadastradas:") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
for chave in dataset.keys(): | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
print(chave) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+139
to
+140
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. O consultar_lista_alunas é um exercício para manipular tuplas, aqui fica uma sugestão de como podemos trabalhar com tuplas. Neste exemplo, criei duas variáveis (nome e sobrenome) para nomear o primeiro e segundo elemento da tupla: Sugestão:
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
def consultar_faltas_aluna(): | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
nome_aluna = input("\nDigite o nome completo da aluna para consultar as faltas: ") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. O dicionário possui uma tupla como chave. Aqui está uma sugestão de implementação simples: Sugestão:
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if nome_aluna in dataset: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
faltas = dataset[nome_aluna]["Presença"].count(False) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
print(f"\nA aluna '{nome_aluna}' possui {faltas} falta(s).") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
else: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
print(f"\nAluna '{nome_aluna}' não encontrada.") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
def consultar_notas_aluna(): | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
nome_aluna = input("\nDigite o nome completo da aluna para consultar as notas: ") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if nome_aluna in dataset: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
notas = dataset[nome_aluna]["Notas"] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
print(f"\nNotas da aluna '{nome_aluna}': {notas}") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
else: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
print(f"\nAluna '{nome_aluna}' não encontrada.") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
def consultar_status_aprovacao(): | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
nome_aluna = input("\nDigite o nome completo da aluna para consultar o status de aprovação: ") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if nome_aluna in dataset: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
notas = dataset[nome_aluna]["Notas"] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
presenca = dataset[nome_aluna]["Presença"] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
participacao = dataset[nome_aluna]["Nota de Participação"] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if len(notas) == 0: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
print("\nNão há notas registradas para esta aluna.") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
media = sum(notas) / len(notas) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
percent_presenca = presenca.count(True) / len(presenca) * 100 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if participacao >= 6 and percent_presenca >= 80 and media >= 6: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
status = "Aprovada" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
elif 3 <= media < 6: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
status = "Recuperação" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
else: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
status = "Reprovada" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
print(f"\nStatus de aprovação da aluna '{nome_aluna}': {status}") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
print(f"Média final: {media:.2f}") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if status == "Recuperação": | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
print(f"Nota de recuperação necessária para aprovação: {media:.2f}") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+160
to
+182
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Como na função incluir_nova_aluna foi adicionado um elemento chamado "Status", podemos só retornar o valor que está nele. Sugestão:
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
else: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
print(f"\nAluna '{nome_aluna}' não encontrada.") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if __name__ == "__main__": | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
main() |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,101 @@ | ||
dataset = {} | ||
|
||
print("-- Calculadora para média de notas -- \nPara realizar o cálculo, digite os dados da aluna e as notas que deseja calcular a média. \n Não são permitidos: \n⇨ Valores que não sejam números para as notas\n⇨ Inserir número negativo") | ||
|
||
def dados_aluna (): | ||
nome = input("\nQual é o nome da aluna? ") | ||
turma = input("Qual é a turma da aluna? ") | ||
participacao = float(input("Qual a nota de participação da aluna? ")) | ||
quantidade_notas = input("\nQuantas notas você deseja inserir para calcular a média? ") | ||
notas_aluna = [] | ||
|
||
for contador in range(int(quantidade_notas)): | ||
while True: | ||
entrada = input(f"Insira a nota #{contador + 1}: ") | ||
try: | ||
nota = float(entrada) | ||
notas_aluna.append(nota) | ||
break | ||
except ValueError: | ||
print("Entrada inválida") | ||
print(f"As notas inseridas foram: {notas_aluna}") | ||
|
||
inserir_frequencia(nome, turma, participacao, notas_aluna) | ||
|
||
def inserir_frequencia(nome, turma, participacao, notas_aluna): | ||
frequencia = input("\nVocê deseja inserir a frequência da aluna? Digite 1 se sim e 2 caso não queira: ") | ||
|
||
if frequencia == '1': | ||
quantidade_dias_frequencia = int(input("Quantos dias de frequência serão inseridos? ")) | ||
|
||
faltas_aluna = [] | ||
for contador2 in range(quantidade_dias_frequencia): | ||
while True: | ||
print("Para registrar as faltas, digite True caso a aluna tenha faltado no dia e False caso ela não tenha faltado") | ||
entrada2 = input(f"Insira a falta #{contador2 + 1}: ").lower() # Aceita 'true' ou 'false' | ||
falta_aluna = entrada2 == 'true' | ||
faltas_aluna.append(falta_aluna) | ||
break | ||
|
||
if quantidade_dias_frequencia > 0: | ||
percent_faltas = round((faltas_aluna.count(True)/ len(faltas_aluna)) * 100, 2) | ||
print(f"O percentual de presença da aluna é de: {percent_faltas}%") | ||
|
||
else: | ||
percent_faltas = 0 | ||
faltas_aluna = [] | ||
else: | ||
faltas_aluna = None | ||
percent_faltas = None | ||
print("\nEntão vamos seguir com os cálculos das médias!\n") | ||
|
||
media_notas(nome, turma, participacao, notas_aluna, faltas_aluna, percent_faltas) | ||
|
||
def media_notas(nome, turma, participacao, notas_aluna, faltas_aluna, percent_faltas): | ||
media = ((sum(notas_aluna)/ len(notas_aluna))*0.8) + (participacao * 0.2) | ||
|
||
if media < 3: | ||
nota_recuperacao = None | ||
print("\nA aluna", nome, "foi reprovada com média igual a:", round(media, 2)) | ||
status_aluna = "Reprovada" | ||
|
||
elif 3 < media < 6: | ||
print("\nA aluna", nome, "foi para recuperação com média igual a:", round(media, 2)) | ||
status_aluna = "Recuperação" | ||
fez_recuperacao = input("\nA média da aluna está baixa. Ela fez prova de recuperação? ").lower() | ||
if fez_recuperacao == 'sim': | ||
nota_recuperacao = float(input("Insira a nota de recuperação: ")) | ||
else: | ||
nota_recuperacao = None | ||
print("Então essa aluna será reprovada por média.") | ||
|
||
|
||
else: | ||
print("\nA aluna", nome, "foi aprovada com média igual a:", round(media, 2)) | ||
nota_recuperacao = None | ||
status_aluna = "Aprovada" | ||
|
||
continuar_programa = input("\nDigite 1 se deseja calcular uma nova média ou 2 caso deseje parar: ") | ||
|
||
if continuar_programa == '1': | ||
dados_aluna() | ||
else: | ||
print("Programa encerrado") | ||
|
||
salvar_dados_aluna(nome, turma, participacao, notas_aluna, status_aluna, media, faltas_aluna, percent_faltas, nota_recuperacao) | ||
|
||
def salvar_dados_aluna(nome, turma, participacao, notas_aluna, status_aluna, media, faltas_aluna, percent_faltas, nota_recuperacao): | ||
chave = (nome) | ||
dataset[chave] = { | ||
"Turma" : turma, | ||
"Nota participação": participacao, | ||
"Notas aluna": notas_aluna, | ||
"Status": status_aluna, | ||
"Media aluna": round(media, 2), | ||
"Faltas aluna" : faltas_aluna, | ||
"Percentual de faltas": percent_faltas, | ||
"Nota recuperação": nota_recuperacao | ||
} | ||
print(f"Dados aluna {chave}: {dataset[chave]}") | ||
|
||
dados_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.
O dataset já estava definido e importado, essa parte não precisava ter alterado. Do modo como está, ele não está recuperando os dados do dicionário que estava existente. Quando usamos o import, conseguimos usar os dados e funções de outros arquivos python no nosso arquivo atual.
Sugestão:
Neste caso, é só usar o dataset igual usamos em sala de aula;