2014-08-28 3 views
1

Этот код должен брать список от одной функции до другой. Список будет доступен только с одним элементом. Я новичок в Python и нуждаюсь в некоторой помощи. Код работает, но приносит только один элемент, из которого был создан список.Передача списка из функции в функцию в python

Когда я выдаю код, я использовал цифры high = 100, low = 20 и multi = 15. Я должен был бы в моем списке [90, 75, 60, 45, 30]. В списке должно быть 5 элементов, входящих в функцию show_mulitples. Мне нужно взять этот список в функцию show_list и подсчитать элементы, показать кратные и получить среднее значение. Но все, что я получаю это первый элемент, 90.

def main(): 
    #get the integers 
    high = int(input('Enter the high integer for the range ')) 
    low = int(input('Enter the low integer for the range ')) 
    multi = int(input('Enter the integer for the multiples ')) 

    #call the function 
    multiples = show_multiples(low, high, multi) 

    list_info = show_list(multiples) 

#take the arguments into the function 
def show_multiples(low, high, multi): 
    #make empty list 
    multi_list = [] 

    #make the list 
    for i in range(high, low, -1): 
     if i % multi == 0: 
      multi_list.append(i) 
      print('List was created') 
      return multi_list 

#take the list into the function 
def show_list(multiples): 

    #create empty total 
    total = 0.0 

    #add the list together 
    for value in multiples: 
     total += value 

    #get Average 
    avg = total/len(multiples) 

    print('This list has',len(multiples),'elements') 
    print(multiples)  
    print('The average of the multiples is',avg) 

main() 

ответ

2

В коде выше, вы возвращаете список сразу после того, как первый элемент был добавлен к нему. Вам нужно переместить оператор return из цикла (NB: в отступе Python важно!).

Try что-то вроде:

def show_multiples(low, high, multi): 
    #make empty list 
    multi_list = []  
    #make the list 
    for i in range(high, low, -1):  
     if i % multi == 0: 
      multi_list.append(i) 
      print('List was created') 
    return multi_list # <-- this should be out of the loop 
+0

Я попробовал это, и он возвращается в ноль в списке. –

+0

@ChukkChukk вы проверили, что в ваших входных переменных? Функция отлично работает для меня. – tttthomasssss

+0

Вот и все! Большое спасибо. Я только начал с Python. Мне пришлось пройти весь путь до цикла for. Теперь это работает. –

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