Desenvolva um programa em Python que leia, através do teclado, vinte nomes de produtos e seus respectivos valores. No final, o programa deve mostrar o nome de todos os produtos que custam entre 50 e 100 reais (fechado). Observação: o programa não deverá permitir valores menores ou iguais a zero.
Soluções para a tarefa
Resposta:
# Lista dos produtos
produtos = []
# Produto atual
i = 0
while len(produtos) != 20:
i += 1
print("Diga o nome do produto " + str(i) + "º: ")
produto = str(input())
print("Diga o preço do produto: ")
try:
price = int(input())
except:
# Se ocorrer um erro, usuário colocar uma letra, ele vai setar preço como -1
price = -1
# Se o preço for menor que 1, 0 ou número negativo, manda preço inválido
if price < 1:
print("Preço inválido.")
i -= 1
continue
# Adiciona produto na lista
produtos.append({"name": produto, "price": price})
### Para pegar os produtos com preço entre 50 e 100
# Passar por todos os produtos com um loop e mostrar os que tem o preço entre 50 e 100 reais.
print("Usando for...in loop")
for produto in produtos:
if produto["price"] >= 50 and produto["price"] <= 100:
print("Produto: " + produto["name"] + ", com o preço: " + str(produto["price"]))
# Criar uma nova lista apenas com os elementos filtrados usando list comprehension
print("Usando list comprehension")
filtrados = [produto for produto in produtos if produto["price"] >= 50 and produto["price"] <= 100]
print("Produtos com preço entre 50 e 100")
print("\n".join(produto["name"] + " - " + str(produto["price"]) for produto in filtrados))
Explicação:
Primeiro tu precisa criar um loop para ir pegando todos os 20 produtos, pra não ter que escrever 40 input() no código, depois disso você vai adicionando em uma lista todos os produtos.
Depois disso você pode usar tanto apenas 1 loop e mostrar todos os produtos que tenham preço entre 50 e 100, ou usar list comprehension para criar uma lista com os valores filtrados e depois mostar todos os filtrados.
Use String.join para mostrar a lista organizadamente.