2015-11-07 5 views
-1

У меня есть задание в моем классе CS: найти пары чисел в списке, которые добавляют к числу n, то есть . дал Это код, который я написал для него:TypeError («int» объект не итерируется », в моем коде в python 3

def pair (n, num_list):  
    """ 
    this function return the pairs of numbers that add to the value n. 
    param: n: the value which the pairs need to add to. 
    param: num_list: a list of numbers. 
    return: a list of all the pairs that add to n. 
    """  
    for i in num_list: 
     for j in num_list: 
      if i + j == n: 
       return [i,j] 
       continue 

Когда я пытаюсь запустить его, я дал следующее сообщение:

TypeError("'int' object is not iterable",) 

в чем проблема, я не могу найти место, в котором я использую list obj как int, o наоборот.

+0

http://stackoverflow.com/questions/1938227/into-object-is-not-iterable –

+0

Привет, я попробовал вашу функцию с >>> pair (4, [1,2,3]) [ 1, 3] и работает –

+0

1). Вы передаете целое число вместо списка чисел в качестве второго аргумента 'pair'. 2) Но даже если вы правильно назовете его, ваша функция 'pair' вернет только список первой пары, которую он найдет. Вам нужно собрать эти пары в главный список и вернуть этот список после проверки каждой пары. 3). Вы будете проверять, будет ли номер в 'num_list' с самим собой, что может быть в порядке. Но он дважды проверяет каждую пару, что может быть не совсем нормально. –

ответ

0

num_list должен быть итерируемым.

Ваш код возвращает первую пару, а не все пары.

Читайте о List Comprehensions

[[i, j] for i in num_list for j in num_list if i + j == n] 
Смежные вопросы