Display message

Asked

Viewed 78 times

-2

compras = []
valores=[]

def pede_produto():
    return (input("Produto: "))

def pede_preco():
    return float(input("Preço: "))

def mostra_dados(produto, preco):
    print('\nProduto \nNome: {} \nPreço: {}' .format(produto, preco))


def novo():

    quantidade = int(input('Quantos produtos que comprar? '))
    for x in range(quantidade):
        print('Produto e Preço', x + 1)
        produto = pede_produto()
        preco = pede_preco()
        compras.append([produto, preco])
        valores.append(preco)


def lista():

        print("\nCompras\n\n------")
        print('Quantidade: {}'.format(len(compras)))
        print('total',sum(valores))
        for e in compras:
            mostra_dados(e[0], e[1])




def valida_faixa_inteiro(pergunta, inicio, fim):
    while True:
        try:
            valor = int(input(pergunta))
            if inicio <= valor <= fim:
                return (valor)
        except ValueError:
            print("Valor inválido, favor digitar entre %d e %d" % (inicio, fim))


def menu():
    print("""
   1 - Novo
   2 - Lista
   0 - Sai
""")
    return valida_faixa_inteiro("Escolha uma opção: ", 0, 3)


while True:
    opção = menu()
    if opção == 0:
        break
    elif opção == 1:
        novo()

    elif opção == 2:
        lista()

How do I place mesnagem (non cadnated product) in def list() if the product is not registered and display this output format

Produto 1:
nome:
preço:
Produto 2:
nome:
Preço:
.....

1 answer

0

Rafael,

To place the message 'unregistered product' if the list is empty, you can create a condition in the function lista who checks the list (compras) before performing the print loop, for example using the not:

if not compras:
  print("\nProduto não cadastrado")

Already to effect the output in the formatting you want, your code seems already very close, missing only list the products, to have access to the index of the products, you can use the function enumerate, using it for their own purposes, thus gaining access to the product and also to the list index:

for i, e in enumerate(compras):

Where the first position in for is the index and the second is the element in the list.

With this you can change your function mostra_dados to display the product number:

def mostra_dados(produto, preco, numero):
  print('\nProduto: {}\nNome: {} \nPreço: {}' .format(numero, produto, preco))

Remember that the Python index starts at zero, before sending the value to the function mostra_dados, one is added to the index value:

mostra_dados(e[0], e[1], i + 1)

Now it is to put everything together, having a result more or less as follows:

compras = []
valores=[]

def pede_produto():
  return (input("Produto: "))

def pede_preco():
  return float(input("Preço: "))

def mostra_dados(produto, preco, numero):
  print('\nProduto: {}\nNome: {} \nPreço: {}' .format(numero, produto, preco))


def novo():
  quantidade = int(input('Quantos produtos que comprar? '))

  for x in range(quantidade):
    print('Produto e Preço', x + 1)
    produto = pede_produto()
    preco = pede_preco()
    compras.append([produto, preco])
    valores.append(preco)


def lista():
  if not compras:
    print("\nProduto não cadastrado")
  else:
    print("\nCompras\n\n------")
    print('Quantidade: {}'.format(len(compras)))
    print('Total',sum(valores))

    for i, e in enumerate(compras):
      mostra_dados(e[0], e[1], i + 1)


def valida_faixa_inteiro(pergunta, inicio, fim):
  while True:
    try:
      valor = int(input(pergunta))
      if inicio <= valor <= fim:
        return (valor)
    except ValueError:
      print("Valor inválido, favor digitar entre %d e %d" % (inicio, fim))


def menu():
  print("""
   1 - Novo
   2 - Lista
   0 - Sai
""")
  return valida_faixa_inteiro("Escolha uma opção: ", 0, 3)


while True:
  opção = menu()

  if opção == 0:
    break
  elif opção == 1:
    novo()
  elif opção == 2:
    lista()

See online: https://repl.it/repls/GlassZigzagProfiler

  • Thank you Daniel and Luiz

Browser other questions tagged

You are not signed in. Login or sign up in order to post.