比较运算符不识别两个相同的数字

时间:2018-02-25 00:22:15

标签: python python-3.x

我有一个非常奇怪的问题,使用以下代码(删除所有不相关的部分,因此代码可能看起来没什么用):

def get_items(cred, items):
    for i in range(0, len(items)):
        for j in range(0, len(items)):
            if items[i] + items[j] == cred:
                result = [i + 1, j + 1]
                result.sort()
                break
            else:
                result = [None, None]
    return result

def main():
    for idx, val in enumerate(content):
        cred = 200
        items = [150, 24, 79, 50, 88, 345, 3]

        output = get_items(cred, items)

我遇到的问题是使用if items[i] + items[j] == cred:行,因为它应该是真的(当i = 0且j = 3时),但它永远不会评估为真,这表明我已经尝试打印出来了items[i] + items[j]语句之前的credif都显示为get_items,它们都显示为200.但[None, None]方法返回 -1,-1,-1,-1 0,-1,-1,-1 1,-1,-1,-1 . . . 0,1,-1,-1 0,2,-1,-1 . . . 1,0,-1,-1 1,2,-1,-1 . . 0,1,2,-1 . . . . . . . . 0,1,2,3 . . .

它们都是绝对的整数,所以我完全不知道这是怎么回事?

2 个答案:

答案 0 :(得分:5)

您好像期待break打破两个循环。它只打破内循环;外循环继续,result重置为[None, None]。只需return结果,而不是破坏。

答案 1 :(得分:1)

我认为你在每次迭代时都会重写结果。试试这样:

def get_items(cred, items):
   result= []
   for i in range(0, len(items)):
       for j in range(0, len(items)):
           print(items[i] + items[j], cred)
           if (items[i] + items[j]) == cred:
               result.append([i + 1, j + 1])
               #result.sort()
               break
           else:
               result.append( [None, None])
   print(result)

cred = 200
items = [150, 24, 79, 50, 88, 345, 3]

output = get_items(cred, items)