Не рекомендуется прерывать цикл for
- или, по крайней мере, я стараюсь этого избегать.Поэтому я думаю, что один более ясный способ сделать это - использовать некоторые существующие инструменты (itertools.combinations
, any
), чтобы избежать написания всего алгоритма - но, как подчеркивали другие пользователи, совершенно нормально использовать break
в вашем for
цикле.
import itertools
def func_sum2(num_list, k):
"""Return true if at least the sum of one combination of 2 elements in the list is equal to k.
Use
- `itertools.combinations` to get the list of all combinations of 2 elements in the list
- `any` to return true when at least one of the elements is Truth
"""
return any(comb[0] + comb[1] == k
for comb in itertools.combinations(num_list, 2))
# Some tests
assert func_sum2([1,2], 3) == True
assert func_sum2([1,2], 4) == False
assert func_sum2([1,2,3], 5) == True
Примечание
Я пропустил ответ над частью, касающейся получения входных данных пользователя для более эффективной его проверки.Итак, ваш оригинальный код в этом формате
def func_sum(num_list, k):
answer = False
for i in range (len(num_list)):
for j in range(i + 1, len(num_list)):
if num_list[i] + num_list[j] == k:
answer = True
break
return answer
# Some tests
assert func_sum([1,2], 3) == True
assert func_sum([1,2], 4) == False
assert func_sum([1,2,3], 4) == True