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

2024-05-27 13:12:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我遇到了一个非常奇怪的问题,下面的代码(删除了所有不相关的部分,所以代码看起来可能什么都没做):

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时),但它的计算结果从来都不是真的,这说明我已经尝试在if语句之前打印出items[i] + items[j]cred,它们都显示为200。然而get_items方法返回[None, None]

它们肯定都是整数,所以我完全不知道这是怎么发生的


Tags: 代码innoneforgetlenifdef
2条回答

您似乎期望break打破这两个循环。它只会打破内部循环;外循环继续,并且result被重置为[None, None]。只是return结果立即而不是打破

我认为您正在覆盖每个迭代的结果。试着这样做:

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)

相关问题 更多 >