Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

nao esta exibindo todos os produtos ! oque há de errado ?

soma = 0
media = 0
prod = []
contando = []
lista_principal = []
cont = 0
for p in range(10):
    prod.append(str(input(f'Digite o nome do produto {cont + 1}: ')))
    prod.append(float(input('Digite seu preço : R$ ')))

    soma = soma + prod[1]
    media = soma / 10
    if prod[1] <= media:
        contando.append(prod[0])

    lista_principal.append(prod[:])
    prod.clear()


print(f'A soma de todos os produtos é R${soma:.2f}')
print(f'Sendo assim .. A média dos produtos é R${media:.2f}')
print(f'Os produtos abaixo da média são: {contando}')

1 resposta
solução!

Bom dia Júlio, tudo bem? Espero que sim!

O que está acontecendo é que a sua média está sendo calculada enquanto está adicionando os produtos, então ainda que tenha 1, 2 ou 3 produtos a sua média está dividindo a soma desses itens e dividindo por 10.

Assim, mesmo que o produto esteja abaixo do preço médio final, ele não estava abaixo do preço médio que havia sido calculado dentro do for e por isso não foi adicionado na lista.

Além disso o seu cont = 0 e o input sempre mostra na tela cont +1, e acaba sendo mostrado "Digite o preço do produto 1". Refatorei o seu código para que os produtos sejam adicionados conforme a média atual e consertando o número do produto que está sendo adicionado:

Repare que não precisa converter para str o input do nome do produto, uma vez que o input já pega o valor em formato de string

soma = 0
media = 0
prod = []
contando = []
lista_principal = []

for p in range(10):
    prod.append(input(f'Digite o nome do produto {p + 1}: '))
    prod.append(float(input('Digite seu preço : R$ ')))

    soma = soma + prod[1]
    media = soma / (p+1)
    if prod[1] <= media:
        contando.append(prod[0])

    lista_principal.append(prod[:])
    prod.clear()


print(f'A soma de todos os produtos é R${soma:.2f}')
print(f'Sendo assim .. A média dos produtos é R${media:.2f}')
print(f'Os produtos abaixo da média são: {contando}')

Mas imagino que você queira comparar a média global e não a média atual de cada iteração, nesse caso o código fica um pouco diferente, há várias maneiras de fazer mas vou deixar uma que utilizei como solução, não quer dizer que seja a melhor:

soma = 0
media = 0
prod_nome = []
prod_preco = []
contando = []
lista_principal = []

for p in range(10):
    prod_nome.append(input(f'Digite o nome do produto {p + 1}: '))
    prod_preco.append(float(input('Digite seu preço : R$ ')))

soma = sum(prod_preco)
media = soma / 10

for indice, preco in enumerate(prod_preco):
    if preco <= media:
        contando.append(prod_nome[indice])

for i in range(10):
    produto = (prod_nome[i], prod_preco[i])
    lista_principal.append(produto)

print(f'A soma de todos os produtos é R${soma:.2f}')
print(f'Sendo assim .. A média dos produtos é R${media:.2f}')
print(f'Os produtos abaixo da média são: {contando}')
print(f'A lista de todos os produtos é: {lista_principal}')

Espero que tenha tirado sua dúvida.

Estou à disposição. Bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software