获取列表中值之间的最大和的方法不能克服用户在python中给定的另一个整数?

时间:2019-01-15 20:09:27

标签: python

我想做一个函数,将距离列表和一个正整数作为输入。该函数返回列表中元素的最大和,因此它不超过作为第二个参数传递的整数。

我尝试了这个,但是却输了价:

def maxDistance(dis,x):
    max=0
    flag="True"
    if sum(dis) <= x :
        return sum(dis)
    for i in range(len(dis)):
        if dis[i] == x:
            return dis[i]
            break
        if dis[i] < x:
            flag="False"
        if dis[i] > max and dis[i] < x:
            max = dis[i]
        for j in range(i+1,len(dis)):
            if dis[i]+dis[j] > max and dis[i]+dis[j] <= x:
                max = dis[i]+dis[j]
    if flag == "True":
        return "Your integer is smaller than your list"
    else:
        return max

我不知道问题出在哪里。

1 个答案:

答案 0 :(得分:0)

让您的列表为l1,第二个arg作为限制为a1,然后:-

>>> l1 = [1,4,6,10]
>>> a1 = 9
>>> from  itertools import combinations as comb
>>> 
>>> v1 = list(comb(l1,2))  # making list of combinations of 2-2 elements of list l1
>>> 
>>> def max1(dis, x):
...     var = 0
...     for i in dis:
...         if sum(i) <= x and sum(i) >= var: var = sum(i) # doing comparision
...     return var
... 
>>> max1(v1, a1)   # this will give the intended output.
7