Adiconar valores em lista

78 views
Skip to first unread message

FERNANDA BICALHO

unread,
Jul 7, 2021, 7:23:45 PM7/7/21
to PUG-MG
Olá, preciso fazer um programa que receba valores de notas de alunos (quantidade não defiinida) e retorne a média das notas com duas casas decimais. Tentei implementar a lógica abaixo mas não deu certo e não estou conseguindo resolver, sou iniciante no Python.

soma = 0
lista = []
n = input('Digite a nota do aluno e para finalizar digite fim: ')
while n > 10 or n < 0:
    print ('Nota invalida')
    n = input('Digite a nota do aluno e para finalizar digite fim: ')
else:
    while n != fim:
        n2 = float(n)
        lista.append (n2)
        soma = soma + n2
        if (n == fim):
            break
        q = len(lista)
        m = soma/q
        print (f'Media das notas: {m.:2f}')

Ali Rios

unread,
Jul 7, 2021, 8:48:18 PM7/7/21
to pyth...@googlegroups.com
Oi Fernanda tem vários erros, mais vamos fazer o seguinte só alterei os valores para o código rodar. Agora você vai entrar no site http://pythontutor.com/ na opção:  Start visualizing your code now . cola o código e manda rodar o programa. Ai você vai olhar a sequência de passos e vai verificar o problema (loop). Corrige e envia de novo para agente verificar.
Seu código esta quase chegando a seu objetivo: fazer a média de notas. Após rodar aí pode corrigir e aperfeiçoar o mesmo.

soma = 0
lista = []
n = input('Digite a nota do aluno e para finalizar digite fim: ')
while n > "10" or n < "0":
    print ('Nota invalida')
    n = input('Digite a nota do aluno e para finalizar digite fim: ')
else:
    while n != "fim":
        n2 = float(n)
        lista.append (n2)
        soma = soma + n2
        if (n == "fim"):
            break
        q = len(lista)
        m = soma/q
        print (f'Media das notas: {m:2f}')

Boa sorte programadora.

--

---
Você recebeu essa mensagem porque está inscrito no grupo "PUG-MG" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-mg+...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/python-mg/5d290001-284e-4398-80b7-cdbca6641065n%40googlegroups.com.

FERNANDA BICALHO

unread,
Jul 8, 2021, 6:21:09 PM7/8/21
to pyth...@googlegroups.com
Ali, infelizmente eu não consegui resolver. Minha dificuldade já está logo no início com a mistura das variáveis str e float.



--
Atenciosamente,
Fernanda Paula Bicalho Pio -  031 9 9934 5893
Mestranda em Análise e Modelagem de Sistemas Ambientais
Engenheira Ambiental


FERNANDA BICALHO

unread,
Jul 8, 2021, 10:01:38 PM7/8/21
to pyth...@googlegroups.com
Consegui desenvolver o código quase todo. Agora faltou apenas fazer a validação no começo de se a nota é < 0 ou > 10, porém, não consegui aplicar isso visto que a entrada permanece como str para aguardar a entrada do comando de fim. O resto deu certo:

#-*-coding: utf-8-*-
lista = []
lista2= []
soma = 0
#entrada dos valores
n = input('Digite o valor da nota e para finaizar digite fim: ')
while n != 'fim':
    lista.append (n) #adicionando os valores das notas na lista
    n = input('Entre com o próximo numero: ')
print (lista)
for n in lista:
    lista2.append(float(n)) #transformando os valores das notas para float
print (lista2)
#soma dos valores da lista
for n in lista2:
    soma = soma + n
print (f'Soma: {soma: .2f}')
c = len(lista2)
#calculo da media
m = soma/c
print (f'A media das notas é: {m: .2f}')

Ali Rios

unread,
Jul 9, 2021, 9:13:49 PM7/9/21
to pyth...@googlegroups.com
Boa Noite Fernanda, Parabéns. Parabéns o código esta rodando. Agora
vamos a fazer umas correções.

Olha o seguinte:
>>> lista = [1,2,3,4,5]
>>> sum(lista)
15
>>> nota = "fim"
>>> nota.isnumeric()
False
>>> nota = "5"
>>> nota.isnumeric()
True

>>> while True:
>>>
Tenta implementa  código.

Depois vamos tratar o número negativo.
O seja < 0.
>>> nota = "-5"
>>> nota.isnumeric()
False
>>> nota.lstrip('-').isnumeric()
True
>>>

Lembra é bom dividir o problema. Solucionado parte de cada vez.


Reply all
Reply to author
Forward
0 new messages