我试图在将用户输入追加到列表的函数中使用列表作为参数
itemno, itemdescrip, itempr = [], [], []
def inpt(x):
n=0
while n < 10:
n+=1
x.append(int(input("What is the item number?")))
inpt(*itemno)
print(itemno)
当我向函数中输入1时,我期望输出为1,但出现错误:TypeError:inpt()缺少1个必需的位置参数:'x'
答案 0 :(得分:1)
在函数调用中以*
为序列加前缀时,就是在告诉unpack序列;也就是说,将序列的每个成员作为函数的单独参数显示。在您的代码中:
inpt(*itemno)
由于itemno
为空,因此您要告诉它不将任何内容解压缩到函数参数中。结果,该函数调用等效于:
inpt()
由于您的inpt()
函数需要一个参数,因此会引发该错误。我不确定您为什么认为*
是必需的,但是简单的解决方法是删除它,它将列表本身传递给函数:
inpt(itemno)
答案 1 :(得分:0)
%cpaste
Pasting code; enter '--' alone on the line to stop or use Ctrl-D.
:itemno, itemdescrip, itempr = [], [], []
:
:def inpt(x):
:
: n=0
: while n < 10:
: n+=1
: x.append(int(input("What is the item number?")))
:
:
:inpt(itemno)
:print(itemno)
:--
What is the item number? 1
What is the item number? 2
What is the item number? 3
What is the item number? 4
What is the item number? 5
What is the item number? 6
What is the item number? 7
What is the item number? 8
What is the item number? 9
What is the item number? 10
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
您只需要从函数调用中删除“ *”