2014-12-19 3 views
-2

Я понимаю, что это может быть базовым, но у меня есть задача создать две функции для поиска средних и медианных значений и их внедрения в программу, которая будет запрашивать ввод последовательность чисел. Я выполнял обе функции отдельно и тестировал их, оба отлично работали. Теперь я помещаю их в одну и ту же программу и просто получаю ошибку типа, говорящую мне оглянуться на мое среднее значение(). Может кто-нибудь, пожалуйста, скажите мне, что я делаю неправильно, и как это сделать. Я не понимаю, почему средняя функция отлично работала с использованием списков раньше, но теперь она говорит, что тип oprand не будет работать с 'int' и 'list'.Почему я продолжаю получать ошибку этого типа? (Python)

values = [] 
loopy = 0 


#Median 
def median_average(*args): 
    loop = 0 
    num_order = sorted(args) 
    length = len(args) 
    half_length = int((length/2)-1) 
    half_length_1 = int((length/2)) 
    if length % 2 == 0: 
     even_averagenf = (num_order[half_length]+num_order[half_length_1])/2 
     even_average = float(even_averagenf) 
     loop = 1 

    if length % 2 != 0: 
     odd_average = (num_order[int(half_length_1)]) 
     loop = 2 

    if loop == 2: 
     return odd_average 

    if loop == 1: 
     return even_average 

#Mean 
def mean_average(*args): 
    mean = sum(args)/len(args)) 
    return mean 



while loopy < 1: 
    user_v = (input("Please enter your sequence of numbers, stop by typing 'end':")) 

    if user_v == "end": 
     print("The median value of your sequence is:", median_average(values)) 
     print("The mean value of your sequence is:", mean_average(values))  
     loopy = 1 

    else: 
     values.append(int(user_v)) 

Любая помощь очень ценится

+0

Просьба указать точный текст ошибки, которую вы получаете. – yole

+0

'mean = sum (args)/len (args))' не вызывает ли синтаксическую ошибку? – aa333

+0

Поместите 'print (args)' в начало 'mean_average', и вы увидите проблему. То, как вы его написали, 'args' -' [[1,2,3]] '. – tdelaney

ответ

1

Вы не должны распаковать аргументы в ваших функциях

def median_average(*args) 
def mean_average(*args) 

Вы хотите обрабатывать сама

def median_average(args) 
def mean_average(args) 

фактический перечисляю этот путь args - это список значений, поэтому вы можете позвонить sum и len на нем.

Смежные вопросы