Home > database >  List not callabe inside a menu
List not callabe inside a menu

Time:10-09

I am new to python and I don't know why I am getting this error message, but this is the code I am working on:

txt_historico = "historico.txt"
HistoricoVendas = []
if exists(txt_historico):
    with open(txt_historico, "r") as arquivo_historico:
      HistoricoVendas = []

def imprimeHistorico()
  print()
  if len[HistoricoVendas] > 0:
    print(HistoricoVendas)
  else: 
      print("Não há histórico de vendas por enquanto")

elif ans=="6":
  HistoricoVendas()

I only put the parts where this specific mistake happens, but if it helps I can post the whole code no problem.

Is the error in the way I am naming that HistoricoVendas ?

CodePudding user response:

As Muhammad hassan says in the comment, you can't do this: len[something]. It should be like this: len(something).

Also you can't separate elif and if statements.

# You can do whatever you want before going into the if statement
txt_historico = "historico.txt"
HistoricoVendas = []
if exists(txt_historico):
    with open(txt_historico, "r") as arquivo_historico:
      HistoricoVendas = []

if exists(txt_historico):
    with open(txt_historico, "r") as arquivo_historico:
      HistoricoVendas = []
# You can't insert code here
elif ans=="6":
  HistoricoVendas()

CodePudding user response:

The error I am getting is line 133 HistoricoVendas(), 'list' object is not callable

import time
from os.path import exists
from json import loads

print('''Olá ! 
Este programa foi desenvolvido como avaliação para a disciplina Programação Básica de Computadores, do curso de Engenharia Civil da UFES''')

print()
print("=-="*20)

txt_estoque = "estoque.txt"
EstoqueLivros = []
if exists(txt_estoque):
  with open(txt_estoque, "r") as arquivo_estoque:
    EstoqueLivros = [ loads(livro.strip("\n").replace("'","\"")) for livro in arquivo_estoque.readlines() ]
    EstoqueLivros = EstoqueLivros[0]

txt_saldo = "saldo.txt"
Saldo = 0
if exists(txt_saldo):
  with open(txt_saldo, "r") as arquivo_saldo:
    Saldo = float(arquivo_saldo.readline())

txt_historico = "historico.txt"
HistoricoVendas = []
if exists(txt_historico):
    with open(txt_historico, "r") as arquivo_historico:
      HistoricoVendas = []

def cadastraLivro(titulo, isbn, valor, quantidade_estoque):
  for livro in EstoqueLivros:
    if isbn == livro["ISBN"]:
      livro["QuantidadeEstoque"]  = quantidade_estoque
      return
  novo_livro = {}       
  novo_livro["Titulo"] = titulo
  novo_livro["ISBN"] = isbn
  novo_livro["Valor"] = valor
  novo_livro["QuantidadeEstoque"] = quantidade_estoque
  EstoqueLivros.append(novo_livro)
  print('\nLivro cadastrado no sistema\n')

def consultaEstoqueTitulo(titulo):
  for livro in EstoqueLivros:
    if titulo == livro["Titulo"]:
      print()
      print(r"Livro encontrado:")
      print()
      print(f"Titulo: {livro['Titulo']}\nISBN: {livro['ISBN']}\nValor: {livro['Valor']}\nQuantidade em Estoque: {livro['QuantidadeEstoque']}")
      return
  print(f"{titulo} não foi encontrado.")

def consultaEstoqueISBN(isbn):
  for livro in EstoqueLivros:
    if isbn == livro["ISBN"]:
      print()
      print(r"Livro encontrado:")
      print()
      print(f"Titulo: {livro['Titulo']}\nISBN: {livro['ISBN']}\nValor: {livro['Valor']}\nQuantidade em Estoque: {livro['QuantidadeEstoque']}")
      return
  print()
  print(f"O livro de ISBN {isbn} não foi encontrado.")

def venderLivro(isbn, quantidade):
  total = 0.0
  for livro in EstoqueLivros:
    if isbn == livro["ISBN"]:
      if livro["QuantidadeEstoque"] - quantidade >= 0:
        livro["QuantidadeEstoque"] -= quantidade
        total  = livro["Valor"] * quantidade
        print()
        print(f"A quantidade de vendas do livro de ISBN {isbn} é de {quantidade} livros.")
        
      else:
        print()
        print(f"O livro de IBSN {isbn} está em falta no estoque.")
      return total
  print()
  print(f"Livro não encontrado.")

def consultaSaldo():
  print()
  print(f"Seu saldo é: R${Saldo}")

def imprimeHistorico():
  print()
  if len(HistoricoVendas) > 0:
    print(HistoricoVendas)
  else: 
      print("Não há histórico de vendas por enquanto")
  
def salvarDados():
  with open(txt_estoque, "w") as arquivo_estoque:
    for livro in EstoqueLivros:
      arquivo_estoque.write(f"{livro}\n")
  
  with open(txt_saldo, "w") as arquivo_saldo:
      arquivo_saldo.write(f"{Saldo}")


ans=True
while ans:
    print ("""
    1) Cadastrar livro
    2) Consulta estoque (busca por título)
    3) Consulta estoque (busca por ISBN)
    4) Vender um livro
    5) Consultar saldo da loja
    6) Mostrar histórico de vendas
    7) Salvar dados
    9) Sair
    """)
    ans=(input("Escolha a opção desejada ")) 
    if ans=="1": 
      titulo = input("\nDigite o título do livro: ")
      isbn = int(input("Digite o ISBN do livro: "))
      valor = float(input("Digite o valor do livro: "))
      qnt_estoque = int(input("Digite a quantidade de livros: "))
      cadastraLivro(titulo, valor, isbn, qnt_estoque)
    elif ans=="2":
      titulo = input("Digite o título do livro para consulta: ")
      consultaEstoqueTitulo(titulo)
    elif ans=="3":
      isbn = int(input("\nDigite o ISBN do livro para consulta: "))
      consultaEstoqueISBN(isbn)
    elif ans=="4":
      isbn = int(input("\nDigite o ISBN do livro para a venda: "))
      quantidade = int(input("Digite a quantidade de livros para a venda: "))
      Saldo  = venderLivro(isbn, quantidade)
    elif ans=="5":
      consultaSaldo()
    elif ans=="6":
      HistoricoVendas()
    elif ans=="7":
      salvarDados()
    elif ans=="9":
      print("\n Até logo!")
      break
    elif ans !="":
      print("\n Escolha uma opção válida")
      time.sleep(1)
      
  • Related