我有一个非常奇怪的问题,使用以下代码(删除所有不相关的部分,因此代码可能看起来没什么用):
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
都显示为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 . . .
。
它们都是绝对的整数,所以我完全不知道这是怎么回事?
答案 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)