Crie um programa que leia nome, sexo e nota(entre 0 e 100) de vários estudantes de uma turma, guardando os dados de cada pessoa em um dicionário e todos os dicionários em uma lista. Faça ainda o tratamento de erros.No final, mostre:
Quantos estudantes foram cadastradas na turma
Qual a média de notas dos estudantes
Uma lista com os estudantes do sexo masculino
Uma lista com os estudantes com nota acima da média da turma
Soluções para a tarefa
Resposta:
import time
import os
def validarNome():
validando = True
while(validando):
nome = input(' >>> Digite o nome do estudante: ')
if(not nome.isdigit()): validando = False
else: print(f' (!) ERRO: "{nome}" não é um nome válido!')
return nome
def validarSexo():
validando = True
while(validando):
sexo = input(' >>> Digite o sexo do estudante (M/F): ')
if((sexo.upper() == 'M') or (sexo.upper() == 'F')): validando = False
else: print(f' (!) ERRO: "{sexo}" não é uma opção válida!')
return sexo
def validarNota():
validando = True
while(validando):
nota = int(input(' >>> Digite a nota do estudante (0-100): '))
if((nota > 0) and (nota <= 100)): validando = False
else: print(f' (!) ERRO: A nota "{nota}" não está compreendida entre 0-100.')
return nota
def validarExec():
os.system('cls')
escolhendo = True
while(escolhendo):
escolha = input(' >>> Deseja cadastrar outros estudantes (S/N)? ')
if(escolha.upper() == 'S'):
escolhendo = False
return True
elif(escolha.upper() == 'N'):
print('Gerando resultados. Aguarde...')
escolhendo = False
time.sleep(1)
return False
else:
print(f' "{escolha}" não é uma opção válida. Informe "S" ou "N".')
def executarPrograma():
executando = True
masculino = []
aprovados = []
contador = 0
dados = []
media = 0
while(executando):
os.system('cls')
print('#--------------------------------------------------------#')
print('# CADASTRAR ESTUDANTES #')
print('#--------------------------------------------------------#')
nome = validarNome()
sexo = validarSexo()
nota = validarNota()
media += nota
contador += 1
if(sexo.upper() == 'M'): masculino.append(nome)
if(nota >= 70): aprovados.append(nome)
media /= contador
dados.append({
"id": contador,
"nome": nome.upper(),
"sexo": sexo.upper(),
"nota": nota
})
executando = validarExec()
os.system('cls')
print('#--------------------------------------------------------#')
print('# RESULTADOS DO PROGRAMA #')
print('#--------------------------------------------------------#')
print(f'# Total de estudantes cadastrados: {contador}')
print(f'# Média de nota dos estudantes: {media:.0f}')
print(f'#\n# Estudantes do sexo masculino:')
for pessoa in masculino: print(f'# >>> {pessoa}')
print(f'#\n# Estudantes aprovados:')
for pessoa in aprovados: print(f'# >>> {pessoa}')
print('#--------------------------------------------------------#')
input( ' Aperte enter para encerrar...')
if(__name__ == '__main__'):
executarPrograma()
Observação:
Qualquer dúvida sobre o código me envie mensagem por aqui, mas acredito que a maior parte você consiga entender.