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
答案 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()
时,实际上是在调用在文件正上方的行中声明的列表,而不是文件顶部的函数。