2013-12-10 1 views
0

Я пишу код, который генерирует случайные числа из определенного диапазона (как показано в первой функции ниже), а затем подсчитывает, сколько раз каждый номер показывал (как это предположительно показано во второй функции). Как применить вторую функцию к списку, который я сделал в первой функции?Как использовать значения внешних переменных в функции?

Мой код:

import random 

def create_list(n): 
    list_size = n 
    number_list = [] 
    for i in range(list_size): 
     number = random.randint(1,6) 
     number_list.append(number) 
    print number_list 
    return number_list 

my_list = create_list(5) 

def count_list(numlist,c): 
    random_list = numlist 
    for j in random_list: 
     times = random_list.count(c) 
    print times 

count_list(["""numbers from number_list"""],1) 
count_list(["""numbers from number_list"""],2) 
count_list(["""numbers from number_list"""],3) 
count_list(["""numbers from number_list"""],4) 
count_list(["""numbers from number_list"""],5) 
count_list(["""numbers from number_list"""],6) 
+1

Как примечание стороны, я не знаю, что ваш 'функция count_list' должна делать, но вот что это _actually_ делает: он перебирает список, установка' times' в число раз ' c' появляется снова и снова. Он забывает все, кроме последнего из этих идентичных назначений, и возвращает последний. Таким образом, вся функция может быть сведена к 'return numlist.count (c)'. – abarnert

+0

... за исключением того, что ваш существующий код вызовет исключение, если 'numlist' пуст, а более простая версия - нет. – abarnert

+0

Сиднейтот: 'random_list = numlist' в вашей функции' count_list() 'бессмысленно. Просто переименуйте параметр «numlist» в «random_list» и удалите эту строку. – rantanplan

ответ

1

How can I apply the second function to the list I made in the first function?

Точно так же применить его к числу 1: передать его в качестве аргумента.

count_list(my_list, 1) 
count_list(my_list, 2) 
# … 
+0

Я заметил, что 'my_list' имеет значение' None', поэтому, когда я пробую то, что вы предложили, он печатает '0'. Можете ли вы дать мне советы о том, как это исправить? – RivaEre

+0

@ RivaEre: Это не может быть правильным для кода, который вы показываете. 'create_list' не может вернуть' None'. И если 'my_list' _were_' None', ваша функция 'count_list' не вернется или не напечатает' 0', это приведет к увеличению 'TypeError: объект NoneType 'не является итерабельным'. Если у вас возникла новая проблема с другим кодом, создайте новый вопрос и поместите фактический код, который вызывает проблему в этом новом вопросе. – abarnert

1

Вы имеете в виду это?

my_list = create_list(5) 
for i in range(1, 7): 
    count_list(my_list, i) 

Просто передайте my_list в качестве аргумента каждый раз.

Если вы хотите, чтобы генерировать различные списки для каждого вызова:

for i in range(1, 7): 
    count_list(create_list(5), i) 
0

Просто передать переменную my_list в качестве аргумента в вашей функции count_list().

count_list(my_list, 1) 
Смежные вопросы