通过函数传递列表的所有元素

时间:2017-01-18 17:07:10

标签: list function python-3.x parameters

我创建了一个python程序,用于排列和查找用户输入的一系列数字的中位数。我一直收到这个错误。

Traceback(最近一次调用最后一次):   文件“C:/ Users / NL-LP3 / Desktop / Corses / Python / Tests Programs / median user input.py”,第24行,in     中位数(^系列) TypeError:median()需要1个位置参数,但是4个被赋予

    series=[]
    finished = False
    while not finished:
        number = input("Please enter a number, when you are done hit ENTER")   
        if len(number)>0:
            series.append([number])
            print ("Number Entered")        
        else:
            finished = True

    print (series)

    def median(data):
        data.sort(key=int)
        elements = len(data)
        middle = int(elements/2)
        if elements%2 ==1:
             print (data[middle])
        else:
            half = ((data[middle])+(data[middle-1]))/2
            print (half)

    median(*series)

2 个答案:

答案 0 :(得分:2)

这里有三个问题:

  1. 您将字符串传入数组,需要将其转换为int
  2. 您正在将一个数组传递给一个数组,该数组为您提供如下输出:

    [[5],[6],[7]]

  3. 您正尝试使用*系列中的*来解压缩数组。

  4. 需要这样:

    [5, 6, 7]
    

    更改此行:

    series.append(int(number))
    

    您还需要将数组传递到中位数,如下所示:

    median(series)
    

答案 1 :(得分:0)

在将系列传递给您的函数时解压缩系列:

 median(*series)

这种方式median被调用,列表中的所有项都作为参数。你想要的是:

median(series)

错过了第二期!阅读Jason Heine's answer ...