Leia também:
- Apostila de Python em PDF
- Certificado do Curso de Python (para quem deseja trabalhar, ganhar dinheiro e viver de programação)
Exercício de Python
Eles querem que você crie um script que exiba o seguinte menu:
0. Sair
1. Exibir lista de alunos com suas notas (cada aluno tem uma nota)
2. Inserir aluno e nota
3. Alterar a nota de um aluno
4. Consultar nota de um aluno específico
5. Apagar um aluno da lista
6. Dar a média da turma
Onde a professora que vai fornecer o nome e nota dos alunos. Quantos ela quiser. Quantas vezes quiser.
Implemente esse script usando um dicionário.
Conhecimentos para resolver essa questão:
O que é ? Para que serve? Como e quando se usa ?
Como exibir items, valores e chaves de um dicionário
Como usar os métodos get() e setdefault()
Adicionar, Alterar e Remover items de um dicionário
Solução comentada
Primeiro, criamos um dicionário de nome alunos e depois chamamos a função que exibe o menu.
- menu()
Bem, vamos lá.Primeiro, temos que criar a lógica que vai ficar exibindo esse menu o tempo inteiro.
Ele é exibido enquanto o valor da variável continuar for diferente de 0.
Se for, encerra o menu() e acaba o laço e encerra o programa.
Se for outro valor diferente, vai cair em vários testes condicionais para saber que função correta deve ser chamada.
- exibir()
Nessa função, vamos simplesmente exibir o dicionário, de maneira bonita e padronizada, os nomes e notas dos alunos.Para isso, usamos uma variável temporária de nome nome, que vai receber cada uma das chaves (keys), do dicionário de alunos.
Então, imprime o nome e a nota de cada aluno.
- inserir()
Antes de inserir, usamos o método get() para saber se já existe uma key com aquele nome que estamos querendo inserir.Se tiver o aluno, o método retorna algum valor, cai no IF e avisamos que não pode inserir.
Se não estiver o aluno, cai no ELSE e criamos um novo item no nosso dicionário.
- alterar()
Antes de alterar um determinado item, temos que nos certificar que ele existe no dicionário.Para isso, usamos o operador in.
Se ele existir na lista de keys, faz a alteração.
Se não não faz nada, só exibe uma mensagem avisando isso.
- consultar()
Idem a lógica anterior.Se existir o item, exibe.
Senão, avisa.
- apagar()
Idem.Primeiro, verificamos se o item existe, consultando sua chave.
Se tiver, usamos o método pop() para retirar o item da lista.
- media()
Pegamos uma variável e inicializamos com valor 0.Depois, somamos todos os valores nessa variável e dividimos pelo tamanho do dicionário, através da função len().
Código Python
def menu(): continuar=1 while continuar: continuar = int( input("0. Sair\n"+ "1. Exibir lista de alunos com suas notas (cada aluno tem uma nota)\n"+ "2. Inserir aluno e nota\n"+ "3. Alterar a nota de um aluno\n"+ "4. Consultar nota de um aluno específico\n"+ "5. Apagar um aluno da lista\n"+ "6. Dar a média da turma\n")) if continuar==1: exibir() elif continuar == 2: inserir() elif continuar == 3: alterar() elif continuar == 4: consultar() elif continuar == 5: apagar() elif continuar == 6: media() elif continuar == 0: print("Encerrando programa") else: print("Opção inválida") def exibir(): for nome in alunos.keys(): print("Nome: ", nome, " - Nota: ", alunos[nome]) def inserir(): nome = input("Digite o nome do aluno: ") nota = float(input("Nota dele: ")) if alunos.get(nome): print("Ja existe o aluno ",nome) else: alunos[nome] = nota def alterar(): nome = input("Aluno a mudar a nota: ") nota = float(input("Nova nota : ")) if nome in alunos.keys(): alunos[nome] = nota else: print("Não existe esse aluno") def consultar(): nome = input("Digite o nome do aluno: ") if alunos.get(nome): print("Nota de ",nome, ": ", alunos[nome]) else: print("Nao existe tal aluno") def apagar(): nome = input("Apagar que aluno: ") if alunos.get(nome): alunos.pop(nome) else: print("Não existe o aluno ",nome) def media(): soma = 0 for count in alunos.values(): soma += count print("Média dos alunos: %.2f" % (soma / len(alunos) )) alunos = {} menu()
Olá! A minha reposta foi a seguinte:
ResponderExcluirdef menu():
print('0. Sair');
print('1. Exibir lista de alunos com suas notas (cada aluno tem uma nota)');
print('2. Inserir aluno e nota');
print('3. Alterar a nota de um aluno');
print('4. Consultar nota de um aluno específico');
print('5. Apagar aluno da lista');
print('6. Dar a média da turma');
opc = int(input("> "));
return opc;
alunos = {
'Joao': 10.0,
'Maria': 9.0,
'Jose': 10.0
}
def aluno(act=1,aluno='',nota=0.0):
if ( act != 0 and act != 1 and act != 6 ):
nomeAluno = input('Digite nome aluno: ');
if ( act == 2 ):
if nomeAluno not in alunos.keys():
alunos[nomeAluno] = nota;
else:
print(nomeAluno + 'já existe na base.');
elif ( act == 3 ):
if nomeAluno in alunos.keys():
alunos[nomeAluno] = nota;
else:
print(nomeAluno + 'não existe na base.');
elif ( act == 4 ):
if nomeAluno in alunos.keys():
print(nomeAluno + 'tem nota igual a' + alunos[nomeAluno]);
else:
print(nomeAluno + 'não tem nota ou existe na base.');
elif ( act == 5 ):
if nomeAluno in alunos.keys():
alunos.pop(nomeAluno);
print(nomeAluno + 'excluido da base.');
else:
print(nomeAluno + 'não existe na base.');
else:
if ( act == 6 ):
tamanho = len(alunos);
totalNotas = 0.0;
for notaAluno in alunos.values():
totalNotas += notaAluno;
media = totalNotas / tamanho;
print("A media é %.2f do total de notas %.2f" %(media, totalNotas));
if ( act == 1 ):
for nomeAluno in alunos.keys():
print('Aluno ' + nomeAluno + ' nota', alunos[nomeAluno]);
cont = True;
while cont:
cont = menu();
if cont == 1:
aluno();
elif cont == 2:
notaAluno = float(input('Digite nota aluno: '));
aluno(2,nota=notaAluno);
elif cont == 3:
notaAluno = float(input('Digite nova nota aluno: '));
aluno(3,nota=notaAluno);
elif cont == 4:
aluno(4);
elif cont == 5:
aluno(5);
elif cont == 6:
aluno(6);
Empreguei a linha de raciocínio correta? Obrigado.
Dei um upgrade no código, quem quiser dar uma olhada...
ResponderExcluirdef menu():
val = 1
while val == 1:
val = int(input('\n0.Sair\n'
'1.Exibir lista de alunos\n'
'2.Inserir novo aluno com nota\n'
'3.Alterar nota de um aluno\n'
'4.Consulta\n'
'5.Deletar aluno\n'
'6.Média\n'))
if val == 0:
print('Menu encerrado')
elif val == 1:
exibir()
elif val == 2:
inserir()
elif val == 3:
alterar()
elif val == 4:
consulta()
elif val == 5:
apagar()
elif val == 6:
media()
def exibir():
for aluno in alunos.keys():
print('Nome:', aluno, '\nNota:', alunos[aluno])
def inserir():
while True:
aluno = str(input('Nome do aluno: '))
nota = float(input('Nota: '))
if alunos.get(aluno):
print('O aluno já existe')
else:
alunos[aluno] = nota
temp = int(input('1.Inserir mais um aluno\n'
'2.Voltar ao menu\n'))
if temp == 1:
continue
elif temp == 2:
menu()
break
return alunos
def alterar():
while True:
aluno = str(input('Aluno que deseja alterar a nota: '))
nota = float(input('Digite a nova nota: '))
if aluno in alunos.keys():
alunos[aluno] = nota
else:
print('Esse aluno não existe.')
continue
temp = int(input('1. Voltar ao menu\n'
'2. Digitar novamente\n'))
if temp == 1:
menu()
break
elif temp == 2:
continue
def consulta():
while True:
aluno = str(input('Qual aluno deseja consultar? '))
if alunos.get(aluno):
print('A nota do aluno',aluno,'é',alunos[aluno])
else:
print('Este aluno não consta no sistema')
temp = int(input('1.Realizar outra consulta\n'
'2.Voltar ao menu\n'))
if temp == 1:
continue
elif temp == 2:
menu()
break
def apagar():
while True:
aluno = str(input('Qual aluno deseja apagar do sistema? '))
if alunos.get(aluno):
alunos.pop(aluno)
else:
print('Este aluno não existe')
temp = int(input('1.Retirar mais um aluno\n'
'2.Voltar ao menu\n'))
if temp == 1:
continue
elif temp == 2:
menu()
break
def media():
soma = 0
for count in alunos.values():
soma += count
print('A média dos alunos é %.2f' %(soma/len(alunos)))
alunos = {}
menu()
minha função menu ficou assim:
ResponderExcluirdef menu():
print("\n0. Sair\n"+
"1. Exibir lista de alunos com suas notas \n"+
"2. Inserir aluno e nota\n"+
"3. Alterar a nota de um aluno\n"+
"4. Consultar nota de um aluno específico\n"+
"5. Apagar um aluno da lista\n"+
"6. Dar a média da turma\n")
op = int(input('Escolha uma opção: '))
if op==2:
alternar()
elif op==1:
exib()
elif op==3:
inserir()
elif op==4:
consult()
elif op==5:
apagar()
elif op==6:
media()
else:
print('Opção inválida.')
#functions
ResponderExcluir'-----/MENU\-----'
def menu (options,students):
print ("-Menu-")
for item in range (len (options)):
print ("(%d)-%s"%(item,options[item]))
choise = int (input ("What do you want?\n-"))
if choise == 0:
print ("Program finished.")
elif choise == 1:
print ()
showstudents(students)
elif choise == 2:
print ()
addestudent(students)
elif choise == 3:
print ()
changenote(students)
elif choise == 4:
print ()
consultnote(students)
elif choise == 5:
print ()
deletestudent(students)
elif choise ==6:
print ()
classaverage(students)
'-----/SHOW STUDENTS NOTES\-----'
def showstudents(students):
for student in students:
print (student, students[student])
print ()
menu(options,students)
'-----/ADD STUDANT AND NOTE\-----'
def addestudent(students):
print ("type close to exit.")
name = input ("student name:")
if name == 'close':
menu(options,students)
elif students.get(name) == None:
note = float (input ("student note:"))
students[name] = note
else:
print("this student already exist!\n")
print ()
addestudent(students)
'-----/CHANGE STUDENT NOTE\-----'
def changenote (students):
name = input ("You want to change the grade of which student?\n")
if name in students.keys():
students[name] = float (input ("New note of %s:"%name))
else:
print ("this student not exist!")
print ()
menu(options,students)
'----/CONSULT A SPECIFIC STUDENT NOTE\----'
def consultnote(students):
name = input ("You want to see the grade of which student?\n")
if name in students.keys():
print (students[name])
else:
print ()
'----/delete student\--'
def deletestudent(students):
name = input ("Which student you want to delete?\n")
if name in students.keys():
students.pop(name)
else:
print("this student already not exist")
print ()
menu(opitions,students)
def classaverage(students):
total = 0
for item in students:
total += item
average = total / len(students)
menu(opitions,students)
#tuples
options = ('Exit','Show students with your notes','Add studant and note','Change student note',
'See an specific student note','Delete student','Class average')
#dictionaries
students = {}
#call functions
menu(options,students)