从Python中的函数中列出一个列表

时间:2017-09-09 16:48:14

标签: python list

为什么我不能将我从函数中创建的列表带到主程序中?

当我在函数中打印它时成功了,但当我尝试在主程序上执行时,有人说“list_numb未定义”

一直试图寻找错误但没有帮助..

谢谢,请帮助!

def inputlist(listlong):
    i = 0
    list_numb = []
    while i < listlong: 
        list_numb.append(int(input("data ke-"+str(i)+": ")))
        i+=1
    return list_numb

inputlist(int(input("How many data do you wanna put in? ")))
print(list_numb)

4 个答案:

答案 0 :(得分:5)

您基本上是返回列表,因此需要将其保存在某个变量中,因此程序应为:

 def inputlist(listlong):
    i = 0
    list_numb = []
    while i < listlong: 
        list_numb.append(int(input("data ke-"+str(i)+": ")))
        i+=1
    return list_numb

list_numb=inputlist(int(input("How many data do you wanna put in? ")))
print(list_numb)

答案 1 :(得分:0)

你也可以像这样运行这个程序:

def inputlist(listlong):
    i = 0
    list_numb = []
    while i < listlong: 
        list_numb.append(int(input("data ke-"+str(i)+": ")))
        i+=1
    return list_numb

print(inputlist(int(input("How many data do you wanna put in? "))))

答案 2 :(得分:0)

您正在从函数返回list但未使用它,并且除了函数之外,它在代码中没有定义。 您可以在程序中全局定义它,如下所示:

def inputlist(listlong):
    i = 0
    while i < listlong: 
        list_numb.append(int(input("data ke-"+str(i)+": ")))
        i+=1
    return list_numb

list_numb = []
inputlist(int(input("How many data do you wanna put in? ")))
print(list_numb)

或者只使用函数中返回的列表,如:

list_numb = inputlist(int(input("How many data do you wanna put in? ")))

您还可以减少代码长度:

list_numb = [input("data ke-"+str(i)) for i in range(int(input("How many data do you wanna put in? ")))]
print(list_numb)

答案 3 :(得分:0)

您已在函数内创建了列表(变量),因此它只存在于那里。返回变量不会将该变量放入主程序中。

我想你想这样做:

print(inputlist(listlong))

它将打印函数返回的任何内容,在本例中为list_numb

或者,您可以在函数外部(以及在主程序中)定义list_numb,然后在函数内编辑该值。您需要一个额外的行来告诉您的函数您想要编辑现在存在于主程序中的list_numb,而不是仅存在于函数内部的list_numb。你也不需要退货。

例如,

list_numb = []

def inputlist(listlong):
    global list_numb  

    i = 0
    list_numb = []
    while i < listlong: 
        list_numb.append(int(input("data ke-"+str(i)+": ")))
        i+=1

inputlist(int(input("How many data do you wanna put in? ")))
print(list_numb)