我创建了一个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)
答案 0 :(得分:2)
这里有三个问题:
您正在将一个数组传递给一个数组,该数组为您提供如下输出:
[[5],[6],[7]]
您正尝试使用*系列中的*来解压缩数组。
需要这样:
[5, 6, 7]
更改此行:
series.append(int(number))
您还需要将数组传递到中位数,如下所示:
median(series)
答案 1 :(得分:0)
在将系列传递给您的函数时解压缩系列:
median(*series)
这种方式median
被调用,列表中的所有项都作为参数。你想要的是:
median(series)
错过了第二期!阅读Jason Heine's answer ...