Python报错‘List not callable inside a menu’原因排查及代码问题求助(新手)
嘿,我来帮你拆解一下问题所在,你的代码里有几个小问题导致了这个错误,咱们一个个说:
核心错误:把列表当成函数调用了
你看到的List not callable错误,根源在这一行:
HistoricoVendas()
HistoricoVendas是你定义的列表对象,而不是函数,不能用()来调用它。你应该调用你写的imprimeHistorico()函数来打印历史记录,也就是把这行改成:
imprimeHistorico()
其他需要修正的语法/逻辑问题
除了这个核心错误,你的代码还有几个小问题得调整:
函数定义缺冒号:
def imprimeHistorico()后面必须加冒号:,这是Python函数定义的语法要求,修正后:def imprimeHistorico():len函数的调用方式错误:
len[HistoricoVendas]是错的,len是内置函数,必须用括号传递参数,改成:if len(HistoricoVendas) > 0:文件读取逻辑缺失:你打开了历史文件,但只是初始化了空列表,没有把文件内容读到
HistoricoVendas里。如果你的historico.txt里每行是一条销售记录,你可以这样读取:if exists(txt_historico): with open(txt_historico, "r") as arquivo_historico: HistoricoVendas = arquivo_historico.readlines()elif的语法错误:
elif ans=="6":前面没有对应的if语句,这会导致语法报错。确保它是某个if分支的后续判断,比如:ans = input("请输入选项:") if ans == "1": # 其他逻辑 elif ans == "6": imprimeHistorico()
修正后的代码片段示例
把这些问题都修复后,相关代码大概是这样的:
from os.path import exists # 别忘了导入exists函数 txt_historico = "historico.txt" HistoricoVendas = [] if exists(txt_historico): with open(txt_historico, "r") as arquivo_historico: HistoricoVendas = arquivo_historico.readlines() # 读取文件内容到列表 def imprimeHistorico(): print() if len(HistoricoVendas) > 0: print(HistoricoVendas) else: print("Não há histórico de vendas por enquanto") # 假设这是你的菜单逻辑部分 ans = input("Escolha uma opção: ") if ans == "1": # 其他操作逻辑 pass elif ans == "6": imprimeHistorico() # 调用打印函数,而不是列表
这样应该就能解决你的错误啦,如果还有其他问题,随时贴出完整代码就行~
内容的提问来源于stack exchange,提问作者rfrancamont
相关产品推荐
相关产品推荐

