Error in code sum beginning with 0; Problem inserting data into .txt file

2

As you can see in the code below, I tried in several ways to make each inserted product a new code with codigo += 1 , but it is returning:

  

UnboundLocalError: local variable 'code' referenced before assignment!

Placing this line as a comment and following the code I get a problem inserting user-entered product data into arquivo.txt .

I've tried% w / o%, manually 1 for 1, and I can not. If you add 1 item only with the filled name and with the quantity, prices and total commented it normally adds, but more than 1 already returns the error of for

Thank you for your attention.

import time
arquivo = open('arquivo.txt','w')
quantidade = codigo = 0
produto = ""
preCompra = preVenda = total = 0


def menu():
    print("Digite a opção desejada: \n0. Sair do programa\n1. Adicionar produto\n2. Remover produto")
    opcao = int(input("Que opção você escolhe? "))
    if opcao < 0:
        print("Esta não é uma opção válida!")
    elif opcao == 0:
        print("Saindo do programa!")
        exit
    elif opcao == 1:
        addProduto()
    elif opcao == 2:
        print("Você escolheu a opção 2!")
    else:
        print("Você deve escolher um dos itens da lista!")


def addProduto():
    #codigo += 1
    produto = str(input("Qual o nome do produto? "))
    quantidade = int(input("Quantos produtos? "))
    preCompra = float(input("Qual o preço de compra? "))
    preVenda = float(input("Qual o preço de venda? "))
    total = float(preCompra * quantidade)
    produtosAdd = [produto, quantidade, preCompra, preVenda, total]
    try:
        '''for pro in produtosAdd:
            arquivo.writelines(produtosAdd)
        arquivo.close()'''
        arquivo.write(produtosAdd)
        print("Produto adicionado com sucesso!")
    except:
        print("Ocorreu um erro!\n")
    time.sleep(5)
    menu()


if __name__ == "__main__":
   menu()
    
asked by anonymous 24.08.2018 / 15:44

1 answer

4

The codigo variable will be global and imported into the scope of the function as read-only. If you need to change the value of it, you need to use the term global to import it as written as well.

def addProduto():
    global codigo
    codigo += 1
    ...

I've tried a little bit about the definition of scopes in this other question:

24.08.2018 / 15:53