使用功能一次附加多个列表

时间:2019-02-13 14:37:53

标签: python python-3.x

我试图在将用户输入追加到列表的函数中使用列表作为参数

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'

2 个答案:

答案 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]

您只需要从函数调用中删除“ *”