管理每日购物清单时,“清单”对象不可调用

时间:2019-11-15 10:54:07

标签: python

def cart():
    while True:
        s = input('Add new item to shopping list: ')
        if s != '0':
            cart.append(s)
        else:
            print('Items on your shopping list are:')
            print(', '.join(cart))
            break
cart = []
cart()

这是我的代码,当我尝试运行时会给出:

错误

Traceback (most recent call last):

  File "__tester__.python3", line 17, in <module>

   cart()

TypeError: 'list' object is not callable

4 个答案:

答案 0 :(得分:2)

您已将cart定义为一个函数,然后将其重新定义为一个空列表。 Python一次只会在内存中保存一个版本的cart。您可以给函数起一个不同的名称,这应该可以解决您的问题。

def run_cart():
    while True:
        s = input('Add new item to shopping list: ')
        if s != '0':
            cart.append(s)
        else:
            print('Items on your shopping list are:')
            print(', '.join(cart))
            break
cart = []
run_cart()

答案 1 :(得分:0)

您刚刚将cart声明为list,然后调用它。

将函数名称从cart更改为process_input或任何相等的名称,然后调用process_input()

def process_input():
    while True:
        s = input('Add new item to shopping list: ')
        if s != '0':
            cart.append(s)
        else:
            print('Items on your shopping list are:')
            print(', '.join(cart))
            break
cart = []
process_input()

答案 2 :(得分:0)

您将函数cart重新定义为新名称cart = [] 现在这条线 cart()意味着[]()将空列表调用视为函数

列表没有让()呼叫的意图,因此列表中没有呼叫

使用此签名()

调用函数

答案 3 :(得分:0)

这是一个命名空间错误,因为您已经命名了两件事:1.列出了cart = [],而且还有2.您的函数def cart(): ...具有相同的名称。要修复它,您需要重命名您的函数或列表。当您调用cart()时,实际上是在调用在文件正上方的行中声明的列表,而不是文件顶部的函数。