我遇到了一个非常奇怪的问题,代码如下(删除了所有不相关的部分,因此代码可能看起来什么也没做):
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]和 cred就在 if 之前语句,它们都显示为 200。然而 get_items方法返回 [None, None] .
它们都是整数,所以我完全不知道这是怎么发生的?
请您参考如下方法:
您似乎期望 break 打破两个循环。它只会打破内循环;外循环继续进行,result 被重置为 [None, None]。只需立即返回结果而不是中断。
