函数返回不完整值

问题描述:

def sum_2_array(list1): 
    item = 10 
    numlist = list() 
    for i in list1: 
     num = list1.pop() 
     diff = item-num 
     if diff in list1: 
      return num, diff 


print sum_2_array([2,3,5,8,7]) 

该函数计算数组元素之间的最小绝对差值。错误是它只返回一个值。 可以anayone请检查并告诉我哪里出错了函数返回不完整值

+0

请[编辑]你的问题和解决缩进。这不是有效的Python代码。 – 2016-02-29 08:05:33

+0

您对给定列表期望的结果是什么? – 2016-02-29 08:06:00

+1

对我来说,它打印'(7,3)',所以它似乎工作。 – Derlin

请运行下面的代码&看看它是否工作。我用简单的逻辑您在正在运行

def sum_2_array(list1): 
     item = 10 
     j = 0 
     for i in list1: 
      print "this is value of J = ", j 
      num = list1[j] 
      print "this is value of num = ", num 
      diff = item - num 
      print "this is vale of diff = ", diff 
      if diff in list1: 
       print num 
       print diff 
      j += 1 

    print sum_2_array([2, 3, 5, 8, 7]) 

代码,当涉及到第三个项目列表中即5.从列表弹出此项目的同时。因为你正在使用list1.pop()。所以它无法在列表中找到5,这就是为什么你只能得到两个值。使用我给的代码&检查它是否有效。

我得到下面的结果从

this is value of J = 0 
this is value of num = 2 
this is vale of diff = 8 
2 
8 
this is value of J = 1 
this is value of num = 3 
this is vale of diff = 7 
3 
7 
this is value of J = 2 
this is value of num = 5 
this is vale of diff = 5 
5 
5 
this is value of J = 3 
this is value of num = 8 
this is vale of diff = 2 
8 
2 
this is value of J = 4 
this is value of num = 7 
this is vale of diff = 3 
7 
3